하나의 작업을 여러 사용자가 협업하기 위해서는 각자 지역 저장소에서 작업한 내용을 자유롭게 원격 저장소에서 공유할 수 있어야 함. 여기서는 사용자가 총 세명이라고 가정함.
① 팀 작업을 위해 팀장이 manuals
란 저장소를 만들었다고 가정. 팀장은 manuals 저장소
화면에서 Settings
> Collaborators
를 선택 > 로그인
> Add people
을 클릭하여 팀원의 깃허브 아이디나 메일 주소를 입력한 후 Add Collaborator
를 클릭함.
② 팀원은 협업자로 초대됐다는 메일과 깃허브 메시지를 받게 되는데, 깃허브 메세지 화면에서 Accept Invitation
을 누르면 초대가 수락됨. 공동 작업자들이 모두 초대를 수락하면 Collaborator
화면에 사용자 이름만 나타남.
원격 저장소에 공동 작업자가 모두 추가되었다면 팀장과 팀원들이 번갈아 컷밋을 올리거나 내려받으면서 작업할 수 있음.
① 먼저, 각 작업자의 컴퓨터에 지역 저장소
를 만듦. 그리고 공동 작업에서 사용할 이름
과 이메일 주소
를 지정함. 저장소마다 다른 이름이나 메일 주소를 사용하기 위해 config
명령을 사용할 때 --global
옵션을 빼고 이름과 메일 주소를 지정함.
git init manuals(저장소이름)
cd manuals
git config user.name "사용자 이름"
git config user.email "이메일 주소"
① 우선, 팀장이 overview.txt
라는 문서를 만들고 커밋한 후 원격 저장소의 main 브랜치
로 푸시함.
vim overview.txt
▶ 내용을 작성한 후 저장
git add overview.txt
git commit -m "overview"
② 지역 저장소의 커밋을 원격 저장소로 푸시함. 푸쉬할 때 -u
옵션을 붙이면, 다음부터 git push
명령만으로 원격 저장소의 main 브랜치
에 커밋을 올릴 수 있음.
git remote add origin 복사한 저장소 주소
git push -u origin main
③ 깃허브의 원격 저장소를 확인하면 팀장이 올린 overview.txt
문서의 최종 커밋이 올라와 있음.
원격 저장소에서 협업할 때 공동 작업자는 자신의 작업을 진행하기 전에 git clone
명령을 사용하여 원격 저장소를 복제함.
git clone 원격 저장소 주소
pull
먼저 하기깃허브에서 협업을 할 때는 여러 사람이 함께 문서를 수정하고 푸시하기 때문에 반드시 작업하기 전에 원격 저장소의 최신 커밋을 pull
한 다음 자신의 커밋을 push
해야 함.
① 팀원 모두가 원격 저장소를 복제한 이후, 팀장이 overview.txt
를 수정해서 update overview
라는 메세지와 함께 커밋, 푸쉬 했다고 가정. (즉, 팀원이 저장소를 복제한 뒤 원격 저장소에 새로운 커밋이 올라온 상황임.)
[
팀장 컴퓨터
]
vim overview.txt
▶ 내용 수정 작성한 뒤 저장
git commit -am "update overview"
② 팀장이 새 커밋을 만들어 원격 저장소에 푸시하는 동안,
팀원1이 다른 컴퓨터에서 다른 커밋을 푸쉬한다고 가정. 팀원1의 컴퓨터에서 apple.txt
문서를 작성한 후 커밋을 만들고, 팀원1이 작성한 커밋을 원격 저장소에 푸시함.
[
팀원1 컴퓨터
]
vim apple.txt
▶ 내용 수정 작성한 뒤 저장
git add apple.txt
git commit -m "apple"
git push -u origin main
▶ 결과 : 오류발생!
! [rejected]
라고 시작하는 오류 메시지는 원격 저장소에 있는 최신 커밋 정보가 팀원 1의 컴퓨터에 저장되어 있지 않기 때문에 나타난 것임. 이런 오류가 생기지 않게 하려면 자신의 커밋을 푸시하기 전에 원격 저장소의 최신 커밋을 가져와야 함.
③ 팀원1의 컴퓨터에 원격 저장소에 있는 최신 커밋을 가져옴. 그리고 팀원1이 만든 커밋을 푸시함.
[
팀원1 컴퓨터
]
git pull
git push -u origin main