Git & Github · · 4 min read
5장 : 깃허브로 협업하기
1. 여러 컴퓨터에서 원격 저장소 함께 사용하기
- 원격 저장소 복제하기 ::
git clonegit clone [복사할 원격 저장소의 URL]- 위와 같이 사용하여 원격 저장소에서 복제할 수 있다.(복제한다 == 클론 == 클로닝)
git clone [복제할 저장소의 URL] [복제할 디렉토리]- 복제할 디렉토리가 없으면 새로 생성해준다.
- 복제할 디렉토리를 넣지 않으면 원격 저장소의 이름과 동일하게 복제된다.
- 실습을 위한 두 환경 준비
- 두 환경을 만들어 각각 회사와 집이라고 생각하자.
- git_home
git clone [URL] git_home
- git_office
git clone [URL] git_office
- 개인 컴퓨터에서 작업하고 올리기
$ cd git_home $ vim f1.txt $ git commit -m "add c" $ git push origin master - 회사 컴퓨터에서 내려받아 작업하기
$ cd ~/git_office $ git pull origin master $ vim f1.txt $ git commit -am "add d" $ git push origin master - 작업을 함에 있어서 항상
git pull을 통해서 원격 저장소에 새로 올라온 커밋을 가져와야한다.
2. 원격 브랜치 정보 가져오기
git pull- 명령은 원격 저장소의 최신 커밋을 지역 저장소에 합쳐준다. 하지만 최신 커밋을 합치기 전에 원격 저장소에 어떤 변화가 있는지 먼저 살펴보아야 한다.
- 원격 브랜치 정보 가져오기 ::
git fetch- fetch(패치) : 불러오다, 가져오다
git fetch: 어떤 변화가 있는지 원격 저장소의 정보를 가져온다.
$ cd ~/git_office # 원격 저장소에서 변경을 실시한다. $ git fetch $ git log --oneline # 변화된 부분이 없다... $ git status # git pull 명령을 사용하면 지역 저장소를 업데이트 할 수 있다고 한다. $ git checkout FETCH_HEAD # 이제 변화된 부분을 확인할 수 있다. $ git checkout master $ git merge FETCH_HEAD $ git log --oneline # 커밋 로그를 확인해보면 적용되어 있다.
3. 협업의 기본 알아보기
- 공동 작업자 추가하기(팀장)
- 누구나 프로젝트의 소스를 내려받을 수 있지만 커밋을 푸시할 순 없다.
- 공동 작업자가 커밋을 푸시할 수 있도록 권하는 주는 것이다.
- 작업 환경 구성하기(팀장, 팀원)
$ git init project $ cd project # --global 옵션을 제거하여 현재 저장소에만 적용될 config입니다. $ git config user.name "사용자 이름" $ git config user.email 사용자@이메.일 - 원격 저장소에 첫 커밋 푸시하기(팀장)
$ vim overview.txt $ git add overview.txt $ git commit -m "overview"- 새로운 깃허브 저장소를 만든다.
$ git remote add origin [저장소 URL] $ git push origin master - 공동 작업자 컴퓨터에서 원격 저장소 복제하기
$ git clone [저장소 URL] # 사용자 이름과 이메일을 설정한다. - 첫 번재 커밋(팀장이 실시한)이 아니라면 풀 먼저하기
- 팀원이 작업트리에서 작업을 수행함에 있어서 팀장이 그 중에 푸시를 실시할 수 있다.
- 팀원이 작업을 완료하고 푸시하려고 할 때 팀장의 새로운 커밋이 푸시되었으므로 rejected라는 오류 메시지가 나온다.
- 이를 방지하기위해서 푸하기전에 항상 풀을 먼저 실시해야 한다.
- 같은 파일을 수정했을 경우 풀 과정에서 merge 에러가 발생할 수 있다.
- 이럴경우 수동으로 이를 해결해주어야 한다… 귀찮다…
4. 협업에서 브랜치 사용하기
- 협업을 하다 보면 팀원들이 각자 기능을 맡아서 작업하는 경우가 많다.
- 이럴 때는 각자의 작업이 master 브랜치에 있는 문서들과 섞이지 않도록 새 브랜치를 만들어서 버전을 관리한다.
- 각 팀원이 만든 새 브랜치 역시 원격 저장소에 그대로 푸시할 수 있다.
- 새로 만든 브랜치 푸시하기
$ git pull origin master # checkout 명령에 -b 옵션을 붙여 브랜치를 새로 만들고 이동까지 한번에 # f 브랜치가 있다면 브랜치로 이동 $ git checkout -b f $ vim f1.txt $ git add f1.txt $ git add f1.txt $ git commit -m "feature1" $ git push origin f- 웹 브라우저로 원격 저장소로 접속하면 브랜치가 생성되어 있다.
- 풀 리퀘스트로 푸시한 브랜치 병합하기
- 브랜치 설명 옆에 있는
New pull request를 누른다. - 풀 리퀘스트 메시지를 작성한 후
Create pull request를 누르면 협업 중인 저장소에 풀 리퀘스트가 전송된다. - 협업 중인 원격 저장소에 등록된 풀 리퀘스트는 공동 작업자 중 누구나 살펴보고 병합할 수 있다. 저장소 파일 위의
Pull request를 누르면 등록된 풀 리퀘스트 목록이 나타난다. 등록된 풀 리퀘스트를 누른다. - 풀 리퀘스트 메시지를 살펴본 다음 내용에 문제가 없으면
Merge pull request를 눌러 병합을 한다. 필요하다면 이 공간을 통해 풀 리퀘스트를 남간 사람과 메시지를 주고받을 수 있다. - 커밋 메시지를 직접 입력하거나 기본 메시지를 사용할 수도 있다.
Confirm merge를 누르면 브랜치 병합이 끝난다. - 브랜치가 병합되면 해당 브랜치에 있던 파일이 master 화면에 나타날 것이다. 브랜치 상태를 알고 싶다면 파일 목록 위에 있는
2 branches를 눌러 보시오. - 브랜치가 병합된 상태라면
merged라고 표시되어 있다. 그리고 공동 작업자 중 누가 브랜치를 병합했는지도 알 수 있다. - 깃허브에서 협업할 때는 보통 작업자마다 브랜치를 만들어서 진행하고, 작업 중간 중간 풀 리퀘스트를 보내서 master 브랜치에 병합한다. 그래서 깃허브로 협업할 때는 다른 작업자의 변경 내용을 바로 반영하기 위해서 항상 풀부터 한 다음 자신의 작업을 진행하는 것이 좋다.
- 브랜치 설명 옆에 있는