협업을 하다 보면, 팀원1은 '기능A'를 만들고, 팀원2는 '기능B'를 만드는 것처럼 팀원들이 각자 다른 기능을 맡아서 작업하는 경우가 많음. 이럴 때는 각자의 작업이 main 브랜치
에 있는 문서들과 섞이지 않도록 새 브랜치를 만들어서 버전을 관리함. 그리고 각 팀원이 만든 새 브랜치 역시 원격 저장소에 그대로 푸시할 수 있음.
'팀장'이 새로운 기능을 만들기 위해 자신의 지역 저장소에 f
라는 브랜치를 만들고 커밋한 다음 원격 저장소에 푸쉬하는 과정임.
① 원격 저장소에 다른 팀원들의 커밋이 추가되어 있는지 확인하기 위해 먼저 최신 커밋 정보를 가져옴.
git pull
② 새로운 기능을 구현하기 위해 지역 저장소에 브랜치 f
를 만들고 f
로 이동함.
git checkout -b f
③ f 브랜치
에서 f1.txt
문서를 만든 후 커밋함.
vim f1.txt
▶ 기능을 작성하고 저장함.
git add f1.txt
git commit -m "features1"
④ 원격 저장소에 f 브랜치
까지 함께 푸쉬해야함. git push
뒤에 origin f
를 추가하면 원격 저장소(origin)에 f브랜치를 푸쉬한다는 의미임.
git push origin f
⑤ 푸쉬가 끝났다면, 웹 브라우저에서 원격 저장소로 접속함. 저장소 파일 목록 위해 2 brnaches
라고 표시됨. 눌러 보면 방금 푸쉬한 브랜치가 나타남.
pull request
로 push
한 브랜치 병합하기아직 원격 저장소의 파일 목록에는 f 브랜치
에서 만들었던 f1.txt
파일이 없음. 푸시한 브랜치는 풀 리퀘스트(pull request)
를 통해 병합해야 원격 저장소에 반영되기 때문임.
① 원격 저장소
에서 브랜치 설명 옆에 있는 New pull request
를 클릭함.
② 풀 리퀘스트 메세지를 작성한 후 Create pull request
를 누르면, 협업 중인 저장소에 풀 리퀘스트가 전송됨.
③ 협업 중인 원격 저장소에 등록된 pull request
는 공동 작업자 중 누구나 살펴보고 병합할 수 있음. 저장소 파일 목록 위의 Pull request
누르면 등록된 풀 리퀘스트 목록이 나타남.
④ 풀 리퀘스트 메시지를 살펴본 다음, 내용에 문제가 없으면 Merge pull request
를 눌러 병합함. 필요하다면 이 공간을 통해 풀 리퀘스트를 남긴 사람과 메시지를 주고받을 수도 있음.
⑤ 커밋 메세지를 직접 입력하거나 기본 메세지를 사용할 수도 있음. Comfirm merge
를 누르면 브랜치 병합이 끝남.
⑥ 브랜치가 병합되면 해당 브랜치에 있던 파일이 main
화면이 나타남.
⑦ 브랜치가 병합된 상태라면 merged
라고 표시됨. 그리고 공동 작업자 중 누가 브랜치를 병합했는지도 알 수 있음.
⑧ 깃허브에서 협업할 때는 보통 작업자마다 브랜치를 만들어서 진행하고, 작업 중간중간 pull request
를 보내서 main
브랜치에 병합함. 그래서 깃허브로 협업할 때는 다른 작업자의 변경 내용을 바로 반영하기 위해 항상 pull
부터 한 다음 자신의 작업을 진행하는 것이 좋음.