깃허브로 협업하기

1. 원격 브랜치 정보 가져오기


원격 저장소 복제하기

$ git clone 저장소주소 디렉터리이름

디렉터리이름이 git_home이라고 가정합니다. 만약 git_home이라는 디렉터리가 없다면 자동으로 디렉터리가 만들어지고 안에는 입력한 저장소에 있는 파일들이 복사됩니다. 현재 디렉터리에 복제하려면 디렉터리이름 대신 마침표(.)를 입력하면 됩니다. 저장소주소 뒤에 아무것도 안쓰면 현재 디렉터리에 저장소이름의 디렉터리가 생성되고 그 안에 복사됩니다.

원격 master 브랜치

지역 저장소의 master 브랜치처럼 원격 저장소도 만들 때 기본으로 master 브랜치가 생성됩니다. 이때 원격 저장소에 있는 HEAD는 원격 저장소의 master 브랜치를 가리킬 것이고 원격 master 브랜치는 가장 최근 커밋을 가리킵니다.
$ git clone 을 이용하여 원격 master 브랜치의 파일을 지역 저장소로 가져오고 $ git log --oneline 입력시 (HEAD -> master), origin/master, origin/HEAD)가 터미널에 나타납니다. 여기서 HEAD -> master은 해당 커밋이 지역 저장소의 최종 커밋이라는 뜻이고, origin/master은 원격 저장소의 최종 커밋이라는 뜻입니다.

원격 브랜치 정보 가져오기

$ git fetch

pull 명령이 원격 저장소의 커밋을 가져와서 무조건 지역 저장소와 합친다면, fetch 명령은 원격 브랜치에 어떤 변화가 있는지 그 정보만 가져옵니다. fetch를 입력해서 $ git log를 입력해도 이전과 변화가 없습니다. 이유는 fetch로 가져온 원격 저장소 정보는 origin/master 브랜치가 아닌 FETCH_HEAD 라는 브랜치로 가져옵니다. 따라서 지역 저장소에 바로 반영되지 않았던 것입니다.

$ git checkout FETCH_HEAD

fetch에서 가져온 최신 커밋을 살펴보기 위해 FETCH_HEAD 브랜치로 체크아웃 합니다.

$ git checkout master
$ git merge FETCH_HEAD

fetch 해서 가져온 최신 커밋을 확인 후 지역 저장소에 합치기 위해 master 브랜치로 체크아웃하고 merge를 입력하여 FETCH_HEAD에 있던 커밋을 병합할 수 있습니다.
cf) git pull 명령은 git fetch 명령과 git merge FETCH_HEAD 명령을 합친 것과 같은 기능을 합니다.

2. 협업의 기본 알아보기


공동 작업자 추가하기

깃허브 회원이라면 누구나 오픈 소스 프로젝트의 소스를 내려받을 수 있습니다. 하지만 누구나 저장소에 커밋을 푸시할 수는 없습니다. 커밋을 푸시할 수 있는 권한을 가지기 위해서는 공동 작업자를 추가하는 작업을 해줘야 합니다. [해당 repository] - [Settings] -[좌측 Manage access] - [Invite a collaborator] 을 통해 추가할 수 있습니다.

공동 작업자 컴퓨터에 원격 저장소 복제하기

원격 저장소에서 협얼할 때 공동 작업자는 자신의 작업을 진행하기 전에 $ git clone 명령을 사용해서 원격 저장소를 복제해야합니다.

첫 번째 커밋이 아니라면 pull 먼저하기

깃 허브에서 협업할 때는 여러 사람이 함께 문서를 수정하고 푸시하기 때문에 반드시 작업하기 전에 원격 저장소의 최신 커밋을 pull한 다음에 자신의 커밋을 푸시해야 합니다.

3. 협업에서 브랜치 사용하기


새로 만든 브랜치 푸시하기

$ git push origin 브랜치명

해당 브랜치를 원격 저장소에 푸시합니다.

풀 리퀘스트로 푸시한 브랜치 병합하기

브랜치를 원격 저장소로 푸시해도 아직 원격 저장소의 파일 목록에는 브랜치에서 만들었던 파일이 없습니다. 푸시한 브랜치는 풀 리퀘스트를 통해 병합해야 원격 저장소에 반영되기 때문입니다.
[해당 저장소] - [branches] -[New pull request] - [Create pull request] - [Merge pull request] -[Confirm merge] 순서로 진행시 브랜치 병합이 끝나면서 푸시한 브랜치에 있던 파일들이 master 브랜치에 나타나게 됩니다.

오픈 소스 프로젝트에 기여하기


  1. 포크(fork)를 통해 오픈 소스 저장소를 자신의 저장소로 복제합니다.
  2. 포크한 소스를 자신의 컴퓨터의 저장소로 복제(clone) 한 뒤 수정하고 푸시합니다.
  3. 원본 저장소의 개발자에게 풀 리퀘스트 하기.

cf) 풀 리퀘스트 하는 방법
[포크한 저장소 이동] - [Pull requests] - [New pull request] - [Create new pull request] - [수정 내용과 이유 입력] -[Create pull request] 이후 나타난 공간에서 저장소의 개발자와 질문과 답변을 주고받으면서 수정한 내용을 원본 소스에 반영할지 여부를 결정합니다.

cf) 내가 만든 소스를 누군가 수정한다면
[요청 받은 저장소의 Pull requests] 에서 수정내용을 컴토하고 합치고 싶다면 [Merge pull request]를 누릅니다.


본 포스팅은 ‘지옥에서 온 문서 관리자 깃 & 깃허브’를 읽고 공부한 내용을 바탕으로 작성하였습니다.


© 2021. By Backtony