이렇게 3명이 협업한다고 생각해보자.
팀장이 manuals라는 저장소를 만들고, Settings - Collaborators에서 팀원1과 2의 깃허브 계정을 추가한다.
$ git init manuals
$ cd manuals
$ git config user.name "사용자이름"
$ git config user.name 메일주소
$ vim overview.txt
$ git add overview.txt
$ git commit -m "overview"
원격 저장소 주소를 복사하고 깃의 origin에 복사한 주소를 지정한 뒤, git push 명령으로 origin의 master브랜치에 커밋을 올린다.
$ git remote add origin 복사한 저장소 주소
$ git push -u origin master
$ git clone 원격 저장소 주소
팀원 모두가 원격 저장소를 복제한 다음 팀장이 overview.txt를 수정해서 'update overview'라는 메시지와 함께 커밋하고 푸시했다고 가정해보자.
팀원이 다른 커밋을 푸시하려면 rejected 오류가 표시된다. 원격 저장소의 최신 커밋을 가져오지 않았기 때문이다.
$ git pull
원격 저장소의 최신 커밋을 가져온다. 이제 푸시할 수 있다.
$ git push -u origin master
팀장이 새 기능을 만들기 위해 브랜치를 만들고 커밋한 뒤 원격 저장소에 푸시하는 과정이다.
$ git pull
먼저 최신 커밋 정보를 가져온다.
$ git checkout -b f
새 기능을 구현하기 위해 지역 저장소에 브랜치 f를 만들고 f로 체크아웃한다. git checkout 명령에 -b 옵션을 사용하면 브랜치를 만들고 체크아웃하는 것을 한번에 할 수 있다.
새 문서를 만들고 커밋하자.
$ vim f1.txt
$ git add f1.txt
$ git commit -m "features1"
$ git push origin f
원격 저장소에 f브랜치를 푸시한다.
다시 깃허브로 돌아와서, New pull request - Create pull request를 선택한다.
(base : master, compare : f)
풀 리퀘스트는 공동 작업자 중 누구나 살펴보고 병합 가능하다. 문제가 없으면 Merge pull request를 눌러 병합한다.