- Git 버전관리는 왜 필요할까?
- 협업을 위해 버전관리는 필수입니다. 지속적으로 발생하는 수정 사항 단위로 버전을 구분하고 최종으로 업데이트 된 파일을 직관적으로 파악하는데 용이합니다. 저는 POSTMAN collection 그리고 environment file의 형상 및 버전관리를 위해 Git을 사용하였습니다. 그리고 jenkins에서 git으로부터 최산화된 코드를 불러와 자동으로 빌드할 수 있도록 하였습니다.
Commit ?
코드에 수정 사항이 발생할 때 로컬에서 원격 저장소로 수정 사항을 반영하기 위해 커밋을 발생시킵니다.
이 때 커밋 단위로 커밋 버전이 생성되며 이를 통해 버전관리가 가능합니다. 다만 우리는 commit 해서 원격 저장소에 수정사항을 직접 반영하기 전에 커밋할 작업 파일들을 먼저 선택할 수 있습니다. 이것을 Stage에 올린다고 표현합니다.
![](https://velog.velcdn.com/images/w_yoon/post/a009f24c-5cca-4048-9612-c35aa3bf91b2/image.png)
Stage it !
(1) Git clone {repository url}
- 내 로컬 저장소에 레파지토리 파일을 생성합니다. 로컬에서 한번만 실행하면 됩니다.
- 최초 접속 시 user.name과 personal access token을 입력합니다.
![](https://velog.velcdn.com/images/w_yoon/post/d5a0149d-899c-4291-95e0-4b5612bed002/image.png)
(2) cd {repository file adress}
- 로컬 저장소로 이동하기
![](https://velog.velcdn.com/images/w_yoon/post/f2fa1d96-7605-440e-afa6-07dd5d2f10ed/image.png)
(3) git branch/ git checkout {branch name}
- git branch 명령어로 현재 branch를 확인할 수 있습니다.
- git checkout "브랜치명" 명령어로 원하는 branch로 전환할 수 있습니다.
- git branch "브랜치명" 명령어로 branch를 생성할 수 있습니다.
![](https://velog.velcdn.com/images/w_yoon/post/29ec9cc4-0851-439f-9419-776110b1972d/image.png)
[comment] 여기까지 되었다면 이제 커밋할 준비가 된 것 같습니다 :)
(4) git status
- 수정사항이 발생한 파일을 로컬 저장소에 저장합니다.
- git status 명렁어로 Tracked 상태의 파일을 확인할 수 있습니다. 아직 stage에 올리지 않았기에 로컬에 저장한 파일을 확인할 수 없습니다. 이 상태를 Untracked 상태라고 합니다.
![](https://velog.velcdn.com/images/w_yoon/post/a9c8765e-390d-4f60-986f-47afb9fe7edd/image.png)
![](https://velog.velcdn.com/images/w_yoon/post/78026577-4012-4542-9ac9-436cdd612c5f/image.png)
(5) git add {file name}
- 수정사항이 발생한 파일을 커밋하기 전에 먼저 stage에 올립니다.
- stage에 올린 후 git status 명령어로 커밋할 파일이 Untracked -> Tracked 상태로 전환된 것을 확인할 수 있습니다. 상세한 상태는 Unmodified, Modified, Staged 중 Modified 입니다.
staging area에 있는 파일들을 커밋하게 되면 해당 파일들은 하나의 커밋으로 저장된 후, 파일의 상태는 Unmodified로 내려오게 됩니다. Unmodified 상태의 파일들을 수정하게 되면 Modified 상태가 됩니다.
![](https://velog.velcdn.com/images/w_yoon/post/96f5a770-3399-463d-bcc0-183549a5a878/image.png)
[comment] 여러개의 파일을 한번에 스테이지에 올리고 싶다면 git add {file1} {file2} ... {file3} 의 형식으로 가능합니다!
(6) git commit -m {commit message}
- 변경 사항에 대한 추적과 원활한 협업을 위해 수정 사항에 대한 간략한 내용을 커밋 메시지에 입력합니다.
![](https://velog.velcdn.com/images/w_yoon/post/bdc0ba29-497b-4913-97f4-bfb481456668/image.png)
(7) git push origin {branch name}
- 로컬 저장소의 변경사항을 원격 저장소로 push 합니다.
![](https://velog.velcdn.com/images/w_yoon/post/df6d5c14-a3fd-4aad-89f1-3bdb9197e9af/image.png)
[comment] 이제 로컬에서 원격 저장소로 수정사항을 반영하고 커밋 버전으로 관리가 가능하게 되었습니다!
커밋 버전과 히스토리는 git log 명령어로 확인이 가능합니다. ![](https://velog.velcdn.com/images/w_yoon/post/d9992873-b4b0-489e-b90b-cfdede82632a/image.png)
(8) git pull
- 원격 저장소에서 변경사항이 있을때 원격 저장소와 로컬 저장소의 상태를 동일하게 업데이트할 수 있습니다.
![](https://velog.velcdn.com/images/w_yoon/post/1a69cba0-dd46-4d38-ba41-21251c1e20f1/image.png)
[comment] 이미 업데이트 상태라고 하네요. 변경사항이 있다면 변경사항이 뜨겠죠? :)