본문 바로가기

Study/Git

[Git] 5장. 깃허브로 협업하기

원격 저장소 복제하기

  • 원격 저장소를 기존에 연결된 지역 저장소 외에 다른 지역 저장소에서 사용하려면 원격 저장소에 담긴 내용 전체를 지역 저장소로 가져와야 한다.
  • 원격 저장소를 지역 저장소로 똑같이 가져오는 것을 '복제한다'고 하거나 '클론' 또는 '클로닝'이라고 한다.
$ git clone <원격 저장소 주소> <복제할 디렉터리 이름>
  • 복제할 디렉터리가 없다면 자동으로 디렉터리가 생성된다.
  • 현재 디렉터리에 복제하려면 <복제할 디렉터리 이름> 대신 마침표(.)를 입력하면 된다.

 

컴퓨터에 올리고 내려받아 작업하기

  • 파일을 커밋과 푸시를 하면 원격 저장소에 저장이 되고, 다른 컴퓨터에서 풀하면 변경 사항이 지역 저장소에 저장된다.
- A 컴퓨터
$ git commit -am <메시지>
$ git push


- B 컴퓨터
$ git pull

 

원격 master 브랜치

  • 지역 저장소의 master 브랜치처럼, 원격 저장소도 만들 때 기본으로 master 브랜치가 생성된다.
  • 먼저, 커밋 상태를 확인한다
$ git log --oneline
  • 최종 커밋 메시지 앞에 (HEAD -> master, origin/master, origin/HEAD)라고 표시되어 있다.
  • HEAD -> master는 이 커밋이 지역 저장소의 최종 커밋이라는 뜻이고, origin/master는 원격 저장소의 최종 커밋이라는 뜻이다.
- 로그 결과
(HEAD -> mastr, origin/master, origin/HEAD) <최신 커밋 메시지>
  • 파일을 수정하고 커밋을 하면, HEAD -> master는 방금 커밋한 내용을 가리키지만, origin/master는 기존의 최종 커밋을 가리킨다.
- 로그 결과
(HEAD -> mastr) <새로운 커밋 메시지>
(origin/master, origin/HEAD) <기존의 최신 커밋 메시지>
  • 다시 git push 명령을 사용해서 커밋을 원격 저장소로 올리면 master와 origin/master 브랜치가 같은 커밋을 가리킨다.
- 로그 결과
(HEAD -> mastr, origin/master, origin/HEAD) <새로운 커밋 메시지>

 

원격 브랜치 정보 가져오기

  • git pull 명령은 원격 저장소의 최신 커밋을 지역 저장소에 합쳐준다. 하지만 최신 커밋을 합치기 전에 어떤 변화가 있는지 먼저 살펴봐야 한다.
  • 원격 저장소의 정보를 가져오는 것을 '페치(fetch)'라고 한다.
  • 풀 명령이 원격 저장소의 커밋을 가져와서 무조건 지역 저장소와 합친다면, 페치 명령은 원격 브랜치에 어떤 변화가 있는지 그 정보만 가져온다.
$ git fetch
  • 페치로 가져온 최신 커밋 정보는 origin/master 브랜치가 아닌 FETCH_HEAD라는 브랜치로 가져온다.
$ git checkout FETCH_HEAD
  • FETCH_HEAD 브랜치에서 git log 명령을 사용하면 최신 커밋에 origin/master와 origin/HEAD가 표시되어 있는데, 이는 페치를 가져온 원격 브랜치의 최신 커밋을 나타낸다.
  • 지역 저장소의 최신 커밋과 페치한 커밋의 차이를 비교할 수 있다.
$ git diff HEAD original/master
  • git pull 명령으로 원격 저장소의 소스를 내려받을 수 있지만,  git merge 명령으로 FETCH_HEAD에 있던 커밋을 병합할 수도 있다.
$ git checkout master
$ git merge FETCH_HEAD
  • 페치의 특징으로, 페치를 한 후 커밋 상태를 확인하면 HEAD -> master와 origin/master는 최신화 되어 있지 않는다.
$ git log --oneline
  • git status 명령으로 확인하면 현재 브랜치가 origin/master에 비해 몇 개의 커밋이 뒤쳐져 있다고 나온다. (원격 저장소가 지역 저장소보다 더 커밋이 되어있는 경우)
$ git status

 

공동 작업자 추가하기

  • 깃허브의 공개 저장소는 주소만 알면 누구든지 접속해서 소스를 살펴볼 수 있지만, 무분별하게 수정되는 일을 막기 위해 승인된 공동 작업자에게만 커밋을 할 수 있는 권한을 주어야 한다.
  • 원격 저장소를 만든 사람이 [Setting] - [Collaborators] - 공동 작업자 깃허브 아이디나 메일 주소를 입력 - [Add Collaborator]를 한다.
  • 공동 작업자는 메일이나 깃허브 메세지를 받게 되면 [Accept Invitation]을 하면 된다.

 

작업 환경 구성하기

  • 공동 작업자가 각각 작업자의 컴퓨터에 지역 저장소를 만들어 사용할 때, 번갈아 커밋을 올리거나 내려받을 수 있다.
  • 지역 저장소에 이름과 이메일 주소를 지정하여 원격 저장소 수정 권한을 받을 수 있다.
$ git config user.name <사용자 이름>
$ git config user.email <메일 주소>

 

공동 원격 저장소 사용 순서

  • 팀장이 먼저 문서를 만들고 커밋한 다음 원격 저장소에 푸시한다.
  • 공동 작업자들은 원격 저장소를 복제(clone)한다.
  • 작업 중, 첫 커밋이 아닌 파일들을 수정할 때, 원격 저장소에 풀한다.

 

공동 원격 저장소 사용 순서 - 브랜치

  • 원격 저장소에 다른 팀원들의 커밋이 추가되어 있는지 풀로 확인한다.
  • 새로운 브랜치를 만들고 체크아웃한다.
  • 커밋을 한 뒤, 원격 저장소에 브랜치를 푸시한다.
$ git push origin <새 브랜치 명>
  • 보통 작업자마다 브랜치를 만들어서 진행하고, 작업 중간중간 풀 리퀘스트(Pull request)를 보내서 master 브랜치에 병합한다.
  • 그래서 푸시한 브랜치는 풀 리퀘스트를 통해 병합해야 원격 저장소에 반영된다.
  • 풀 리퀘스트는 홈페이지에서 [New pull request] - [Create pull request]로 신청하고, 파일 목록 위의 [Pull request]로 들어가면 나타나는 목록에서 [Merge pull request]를 눌러 병합한다. [Confirm merge]를 누르면 브랜치 병합이 끝난다.

'Study > Git' 카테고리의 다른 글

[Git] 4장. 깃허브로 백업하기  (0) 2021.05.23
[Git] 3장. 깃과 브랜치  (0) 2021.05.22
[Git] 2장. 깃으로 버전 관리하기  (0) 2021.05.18
[Git] 1장. 깃 시작하기  (0) 2021.05.17