깃허브로 협업하기

eunsour 2020. 8. 15.
반응형

※ 여러 컴퓨터에서 원격 저장소 함께 사용하기

하나는 PC, 하나는 노트북의 저장소라고 가정하고, 모두 하나의 깃허브 계정으로 둘 이상의 컴퓨터에 원격 저장소를 공유해 버전을 관리하는 방법이다.

1. 원격 저장소 복제하기 - git clone

원격 저장소를 기존에 연결된 지역 저장소 외에 다른 지역 저장소에서 사용하려면 원격 저장소에 담긴 내용 전체를 지역 저장소로 가져와야 한다.

$ git clone 복사한 주소 붙여넣기 git_home
$ git clone 복사한 주소 붙여넣기 git_office

결과 >> 

▶ git_home 디렉터리와 git_office 디렉터리에 같은 내용이 저장되어 있는지 확인해보기

$ cd git_home
$ git log

 결과 >> 

이렇게 원격 저장소를 복제하면 자동으로 지역 저장소와 원격 저장소가 연결된다. git_home 디렉터리나 git_office 디렉터리에서 git remote -v 명령을 사용하면 연결이 되어있는지 확인할 수 있다.

$ git remote -v

결과 >> 

 

2. 개인 컴퓨터에서 작업하고 올리기

$ cd ~
$ cd git_home
$ vim f1.txt

▶ f1.txt 파일을 스테이징하고 커밋한다.

$ git commit -am "add c"
$ git push

결과 >> 원격 저장소에 커밋한 'add c'라는 커밋이 올라와 있는 것을 볼수있다.

 

3. 회사 컴퓨터에서 내려받아 작성하기

개인 컴퓨터에서 커밋을 푸시했기 때문에 회사 컴퓨터에서 원격 저장소를 복제했을 때와 원격 저장소의 커밋 상황이 달라졌다. 따라서 회사 컴퓨터에서 작업하려면 먼저 원격 저장소에 새로 올라온 커밋을 가져와야 한다.

$ cd ~/git_office
$ git pull
cd ~/git_office 명령은 cd ~ 명령과 cd git_office 명령을 한꺼번에 처리한 것이다.

결과 >>

▶ 저장소에 있는 f1.txt 파일을 수정하고 커밋을 만든 후 원격 저장소로 푸시한다.

$ vim f1.txt
$ git commit -am "add d"
$ git push

결과 >> 웹 브라우저에서 깃허브 저장소를 열고 [commits]를 확인하면 방금 푸시한 커밋을 확인할 수 있다.

다시 개인 컴퓨터에서 작업할 때는 git pull 명령으로 원격 저장소에 있는 최신 커밋을 가져와 작업을 시작한다.

$ cd ~/git_home
$ git pull
$ git log
하나의 원격 저장소에 둘 이상의 컴퓨터를 연결해서 사용한다면 풀과 푸시를 습관화하는 것이 좋다. 그러면 어떤 컴퓨터에서 접속하든 항상 최신 소스를 유지할 수 있다.

※ 원격 브랜치 정보 가져오기

최신 커밋을 합치기 전에 원격 저장소에 어떤 변화가 있는지 먼저 살펴봐야 한다. 이럴 때는 원격 브랜치에서 정보만 먼저 가져올 수 있다. 

1. 원격 master 브랜치

지역 저장소의 master 브랜치처럼 원격 저장소도 만들 때 기본으로 master 브랜치가 생성된다.

 

2. 원격 브랜치 정보 가져오기 - git fetch

페치(fetch)는 '불러오다, 가져오다' 라는 뜻이다. 그래서 git fetch 명령은 원격 저장소의 정보를 가져오는 기능이 있다. 풀 명령이 원격 저장소의 커밋을 가져와서 무조건 지역 저장소와 합친다면, 페치 명령은 원격 브랜치에 어떤 변화가 있는지 그 정보만 가져온다. 팀 작업을 할 때 다른 사람이 수정한 소스를 한번 더 훑어보고 지역 저장소와 합치고 싶다면 풀 대신 페치를 사용해서 커밋을 가져온 다음 지역 저장소와 합치면 된다.

$ cd~/git_office
$ git fetch
$ ls -al

결과 >> git_home에 원격 저장소로 푸시했단 f3.txt 파일이 보이지 않는다.(고 가정)

▶ 원격 저장소의 최신 커밋 정보를 가져왔지만 아직 지역 저장소에 합치지 않아 원래 git_office에 있던 최신 커밋만 나타난다. git status 명령으로 확인해 보면 최신 커밋 하나가 아직 지역 저장소에 반영되지 않았다고 나온다. git pull 명령을 사용하면 지역 저장소를 업데이트 할 수 있다.

$ git status

결과 >> 

▶ 페치한 후에 최신 커밋을 현재 브랜치에 합치려면 git pull 명령을 사용해서 원격 저장소의 소스를 내려받을 수도 있고, git merge 명령으로 FETCH_HEAD에 있던 커밋을 병합할 수도 있다. 여기에서는 git merge 명령으로 병합한다.

$ git checkout master
$ git merge FETCH_HEAD

 결과 >> 'create f3.txt'라는 최신 커밋이 지역 저장소에 반영된 것을 볼 수 있다.

git pull 명령은 git fetch 명령과 git merge FETCH_HEAD 명령 두 개를 합친 것과 같은 기능을 한다. 즉 git fetch를 사용해 원격 브랜치를 가져온 다음 git merge 명령을 사용해 원격 브랜치와 현재 브랜치를 합쳐주는 것을 git pull 명령으로 한꺼번에 할 수 있다.


※ 협업에서 브랜치 사용하기

1. 새로 만든 브랜치 푸시하기

팀장이 새로운 기능을 만들기 위해 자신의 지역 저장소에 f 라는 브랜치를 만들고 커밋한 다음 원격 저장소에 푸시하는 과정을 살펴본다.

 

▶ 원격 저장소에 다른 팀원들의 커밋이 추가되어 있는지 확인하기 위해 먼저 git pull 명령을 사용해 최신 커밋 정보를 가져오고, 새로운 기능을 구현하기 위해 지역 저장소에 브랜치 f 를 만들고 f로 체크아웃한다.

$ git pull
$ git checkout -b f
checkout 명령에 -b 옵션을 사용하면 브랜치를 만들고 체크아웃하는 것을 한꺼번에 할 수 있다.

▶ 원격 저장소에 f 브랜치를 푸시한다.

$ git push origin f

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

푸시한 브랜치는 풀 리퀘스트(pull request)를 통해 병합해야 원격 저장소에 반영된다.

(1) 브랜치 설명 옆에 있는 [New pull request]를 누른다.

(2) 풀 리퀘스트 메시지를 작성한 후 [Create pull request]를 누르면 협업 중인 저장소에 풀 리퀘스트가 전송된다.

(3) 협업 중인 원격 저장소에 등록된 풀 리퀘스트는 공동 작업자 중 누구나 살펴보고 병합할 수 있다. [Pull request]를 누르면 등록된 풀 리퀘스트 목록이 나타난다. 

(4) 풀 리퀘스트 메시지를 살펴본 다음 내용에 문제가 없으면 [Merge pull request]를 눌러 병합한다. 필요하다면 이 공간을 통해 풀 리퀘스트를 남긴 사람과 메시지를 주고받을 수도 있다.

(5) 커밋 메시지를 직접 입력하거나 기본 메시지를 사용할 수도 있다. [Confirm merge]를 누르면 브랜치 병합이 끝난다.

(6) 브랜치 상태를 알고 싶다면 파일 목록 위에 있는 '2 branches'를 누른다.

(7) 브랜치가 병합된 상태라면 'merged'라고 표시되어 있다. 그리고 공동 작업자 중 누가 브랜치를 병합했는지도 알 수 있다.

(8) 깃허브에서 협업할 때는 보통 작업자마다 브랜치를 만들어서 진행하고, 작업 중간중간 풀 리퀘스트를 보내서 master 브랜치에 병합한다. 그래서 깃허브로 협업할 때는 다른 작업자의 변경 내용을 바로 반영하기 위해 항상 풀(pull)부터 한 다음 자신의 작업을 진행하는 것이 좋다.

 

 

 

 

Reference

 
Do it! 지옥에서 온 문서 관리자 깃&깃허브 입문
저자 : 이고잉, 고경희
출판 : 이지스퍼블리싱
발매 : 2019.12.06

 

반응형

댓글