[Git] Github 협업하기

신세원·2022년 5월 21일
4

오늘은 깃허브로 간단하게 협업하는 방법에 대해 전반적으로 알아보겠습니다.

1. 저장소 Fork, Clone

제일 먼저 협업할 저장소의 프로젝트를 Fork 해옵니다. (여기서 Fork란 다른 저장소에 있는 프로젝트를 내 저장소로 복사한다)라는 뜻입니다.

fork로 가져온 저장소를 내 컴퓨터의 로컬에 clone합니다.

$ git clone <origin repository 주소> // 여기서 <origin repository 주소>란 앞서 clone을 통해 복사한 주소를 의미

2. 저장소 추가

이렇게 단순 Fork만해서는 끝이 아닙니다. 협업을 위해서는 또 다른 저장소(upstream)를 추가해야합니다.

  • 다른 사람의 Github 저장소를 Fork한 경우 내 Github 저장소는 origin.
  • 우리가 처음 fork를 시도한 저장소는 upstream 저장소.
  • originupstream 모두 remote 저장소.
  • originupstream을 구분하기 위해 upstream이라는 명칭을 사용합니다.

2-1) upstram 저장소 추가

$ git remote add upstream <원본 저장소>

프로젝트가 만들어졌던 저장소에 주소를 가지고 upstream을 추가해준다.

2-2) Remote 저장소 목록 확인

$ git remote -v

위와 같이 치면 origin,upstream 저장소가 잘 등록이 되어있는걸 볼 수 있다.

3. Branch 생성

내 로컬에서 협업으로 작업할때는 branch를 만들어서 진행합니다.
브랜치 네임을 정하는 방법은 여러가지가 있지만, 저는 협업을 할때 지라도 같이 사용하는데, 지라를 사용해서 브랜치 네임을 정합니다.

// 위 사진에서처럼 지라에서 티켓을 생성하면 티켓 이름이 생성되는데, 티켓 이름으로 브랜치를 생성한다.

$ git checkout -b ZEN-1
Switched to a new branch 'ZEN-1'

// 현재 브랜치 목록
$ git branch
* ZEN-1
* main

4. 작업 이후(commit, add, push)

작업을 한 뒤 commit ,add, push를 해주어 수정한 작업을 반영합니다.

$ git push origin ZEN-1 // push 진행 시 brach 이름을 꼭 명시해 줍니다.

하지만 이때 수정된 내용은 origin repository(fork를 떠 온 내 repository)에 반영됩니다.
우리는 우리 저장소가 아니라 원본 저장소에 내용이 전달되어야 합니다.

5.Pull Request 작성

push가 완료하면 본인 계정의 저장소에 Compare & pull request 버튼이 활성화 되어 있을겁니다.
버튼을 클릭하여 작업 내용에 대한 메세지 작성 후 Pull Request를 진행하면 원본 repository에서 확인 후 Merge 여부를 결정합니다.

7. 코드 리뷰 및 Merge Pull Request

원본 저장소 관리자는 Pull Request를 읽고 작업 여부 또는 변경 사항을 확인 후 Merge 여부를 결정하게 됩니다.

8. Merge 이후 내 저장소에 변경내용 반영하기

위에 7번까지 완료 했으면 내가 작업한 내용은 원본 저장소에 반영이 되게 됩니다.
그렇다면 다음 작업을 위해 원본 저장소의 내용을 내 저장소에 어떻게 반영할까요?

지금까지 작업한 내용은 아래와 같습니다.

uptream -> (fork) -> origin -> (add/commit/push) -> upstream(merge)

  • upstream으로부터 저장소를 fork해온 origin 저장소에서 작업하여 다시 upstream으로 보냈습니다.
  • 이제 변경된 upstream의 내용을 origin 저장소로 반영해줄 차례입니다.

8-1) upstream 저장소로부터 'fetch'합니다.

$ git checkout main
$ git fetch upstream
$ git merge upstream/main

자신의 원격 저장소인 origin에 반영하려면 git push를 수행합니다

$ git push

이렇게 함으로써 upstream에서 변경되었던 내용을 origin repository(내 저장소)로 반영할 수 있게 되었습니다.

다른 사람의 원격 저장소로부터 협업하는 방법

profile
생각하는대로 살지 않으면, 사는대로 생각하게 된다.

0개의 댓글