오늘은 깃허브로 간단하게 협업하는 방법에 대해 전반적으로 알아보겠습니다.
제일 먼저 협업할 저장소의 프로젝트를 Fork 해옵니다. (여기서 Fork란 다른 저장소에 있는 프로젝트를 내 저장소로 복사한다)라는 뜻입니다.
fork로 가져온 저장소를 내 컴퓨터의 로컬에 clone합니다.
$ git clone <origin repository 주소> // 여기서 <origin repository 주소>란 앞서 clone을 통해 복사한 주소를 의미
이렇게 단순 Fork만해서는 끝이 아닙니다. 협업을 위해서는 또 다른 저장소(upstream)를 추가해야합니다.
- 다른 사람의 Github 저장소를 Fork한 경우 내 Github 저장소는
origin
.- 우리가 처음 fork를 시도한 저장소는
upstream
저장소.origin
과upstream
모두remote
저장소.origin
과upstream
을 구분하기 위해upstream
이라는 명칭을 사용합니다.
$ git remote add upstream <원본 저장소>
프로젝트가 만들어졌던 저장소에 주소를 가지고 upstream을 추가해준다.
$ git remote -v
위와 같이 치면 origin,upstream 저장소가 잘 등록이 되어있는걸 볼 수 있다.
내 로컬에서 협업으로 작업할때는 branch를 만들어서 진행합니다.
브랜치 네임을 정하는 방법은 여러가지가 있지만, 저는 협업을 할때 지라도 같이 사용하는데, 지라를 사용해서 브랜치 네임을 정합니다.
// 위 사진에서처럼 지라에서 티켓을 생성하면 티켓 이름이 생성되는데, 티켓 이름으로 브랜치를 생성한다.
$ git checkout -b ZEN-1
Switched to a new branch 'ZEN-1'
// 현재 브랜치 목록
$ git branch
* ZEN-1
* main
작업을 한 뒤 commit ,add, push를 해주어 수정한 작업을 반영합니다.
$ git push origin ZEN-1 // push 진행 시 brach 이름을 꼭 명시해 줍니다.
하지만 이때 수정된 내용은 origin repository(fork를 떠 온 내 repository)에 반영됩니다.
우리는 우리 저장소가 아니라 원본 저장소에 내용이 전달되어야 합니다.
push가 완료하면 본인 계정의 저장소에 Compare & pull request
버튼이 활성화 되어 있을겁니다.
버튼을 클릭하여 작업 내용에 대한 메세지 작성 후 Pull Request를 진행하면 원본 repository에서 확인 후 Merge 여부를 결정합니다.
원본 저장소 관리자는 Pull Request를 읽고 작업 여부 또는 변경 사항을 확인 후 Merge 여부를 결정하게 됩니다.
위에 7번까지 완료 했으면 내가 작업한 내용은 원본 저장소에 반영이 되게 됩니다.
그렇다면 다음 작업을 위해 원본 저장소의 내용을 내 저장소에 어떻게 반영할까요?
지금까지 작업한 내용은 아래와 같습니다.
uptream -> (fork) -> origin -> (add/commit/push) -> upstream(merge)
$ git checkout main
$ git fetch upstream
$ git merge upstream/main
자신의 원격 저장소인 origin에 반영하려면 git push를 수행합니다
$ git push
이렇게 함으로써 upstream에서 변경되었던 내용을 origin repository(내 저장소)로 반영할 수 있게 되었습니다.