![post-thumbnail](https://velog.velcdn.com/images/dlskaghd234/post/5bd605c5-7159-4f27-aed1-ce29d2f815fc/image.png)
Git Workflow Procedures
-
새로운 저장소 만들기
- 폴더를 하나 만들고, 그 안에서 "git init"이라는 명령을 실행!
- 새로운 git 저장소가 만들어진다.
-
저장소 받아오기
- 로컬 저장소를 복제하려면 "git clone 로컬 저장소 경로"이라는 명령을 실행!
- 원격 서버의 저장소를 복제하려면 "git clone 사용자명:원격 저장소 경로"이라는 명령을 실행!
-
작업의 흐름
- 나의 로컬 저장소는 git이 관리하는 세 그루의 나무로 구성된다.
- 첫 번째 나무인 작업 디렉토리 (working directory)는 실제 파일들로 이루어져있다.
- 두 번째 나무인 인덱스 (index)는 준비 영역 (staging area) 역할을 한다.
- 세 번째 나무인 head는 최종 확정본 (commit)을 나타낸다.
![](https://velog.velcdn.com/images%2Fdlskaghd234%2Fpost%2Fda623570-a8b1-4563-bf06-d93a6cfb7a32%2Fimage.png)
-
추가와 확정 (commit)
- 변경된 파일은 "git add 파일 이름"으로 인덱스에 추가할 수 있다.
- 하지만 실제로 변경 내용을 확정하려면 "git commit -m "이번 확정본에 대한 설명""이라는 명령을 실행!
-
변경 내용 발행 (push)
- 이제 변경된 파일이 head에 반영되었다. 하지만 원격 저장소에는 아직 반영이 안됌.
- 아직 로컬 저장소의 head안에 변경 내용이 머물러 있으므로 이 내용을 "git push origin master"라는 명령으로 원격 서버로 올려본다. (다른 가지를 발행하려면 master를 그 가지 이름으로 변경)
- 기존에 있는 원격 저장소를 복제한 것이 아니면, 원격 서버의 주소를 git에게 알려주는 "git remote add origin 원격 서버 주소"이라는 명령을 실행!
-
가지 (branch)치기
- 가지는 안전하게 격리된 상태에서 무언가를 만들 때 사용한다.
- 저장소를 새로 만들면 기본으로 master 가지가 만들어진다.
- 다른 가지를 이용하여 개발을 진행하고, 나중에 완료되면 master가지로 돌아와 병합하면 된다.
![](https://velog.velcdn.com/images%2Fdlskaghd234%2Fpost%2F04420cd7-0b95-4447-b57f-90d4395a892a%2Fimage.png)
- "feature"라는 이름의 가지를 만들고 갈아타려면 "git checkout -b feature" 명령을 실행!
- master 가지로 돌아오려면 "git checkout master" 명령을 실행!
- 가지를 삭제하기 위해서는 "git branch -d feature" 명령을 실행!
- 새로 만든 가지를 원격 저장소로 전송하려면 "git push origin 가지 이름" 명령을 실행!
-
갱신과 병합 (merge)
- 나의 로컬 저장소를 원격 저장소에 맞춰 갱신하려면 "git pull" 명령을 실행!
- "git pull"을 실행하면 원격 저장소의 변경 내용이 로컬 작업 디렉토리에 받아지고(fetch), 병합(merge)된다.
- 다른 가지에 있는 변경 내용을 현재 가지에 병합하려면 "git merge 가지 이름" 명령을 실행!
- Git은 자동으로 변경 내용을 병합하려고 하는데 가끔 충돌(conflict)가 발생.
- 충돌이 발생 시 직접 수정해서 병합 가능하게 하고 "git add 파일 이름" 명령을 실행!