본문 바로가기
git

github 다른사람의 repository clone후 관리하기

by PudgeKim 2020. 5. 30.

처음으로 다른 사람과 협업을 해서 미니 프로젝트를 만들고 있다. 그러다보니 당연히 깃을 사용하고 있는데 아직 깃 초보라서 프로젝트 하다가 막히는 부분이 있는데 나같은 깃 초보들을 위해 간단하게 정리해보려고한다.

우선 소개할 내용은 아래와 같다.

나와 han이라는 사람이 협업을 한다. han이 프로젝트를 관리한다고 가정하자. 그러면 han이 깃허브에 repository를 생성후에 나는 han의 repository를 clone후에 코드를 관리하게 될 것이다. 이 때 어떻게 코드를 가져오고 내가 작성한 코드를 어떻게 han의 repository에 줄 수 있을까?

1. han의 repository를 들어가서 fork를 누른다. 그러면 내 깃헙에 fork된 repository가 생긴다.

2. 이제 fork된 내 repository를 자신의 컴퓨터상에 원하는 디렉토리에 clone한다.

 

여기까지 했으면 아래와 같은 기능들을 할 수 있다.

-자신의 코드들을 fork된 자신의 github repository에서 관리할 수 있다. 
-github에 들어가서 fork된 repository로 들어간 후에 pull request를 하면 han이 내 코드들을 merge할 수 있다.

즉, han은 내가 작성한 코드들을 받아서 자신(han)의 코드와 합칠 수 있다.

그런데 나는 어떻게 해야 han이 merge한 코드들(내 코드+han의 코드 )을 받을 수 있을까?

 

3. git remote add upstream <han의 repository 주소>  를 한다. (참고로 <>이 꺽새들은 빼줘야한다)

4. 이제 git fetch upstream을 하고 git pull을 하면 han의 repository에 있는 코드들을 받을 수 있다.

5. 내가 해본 결과 4번까지하고 파일이 변경되지 않는 경우가 있었다. 이 경우에는
git fetch upstream -> git checkout master(현재 자신의 branch를 master로 바꿔주는 것) -> git merge upstream/master를 하면 해결이 된다.

5번단계를 정리하면 현재 내가 작업하고 있는 코드와 내가 가져온 han의 코드를 merge하는 거라고 보면된다.
(근데 사실 위의 과정을 살펴보면 내가 가져온 han의 코드는 이미 내 코드와 merge된 코드이기 때문에 그냥 현재 내가 작업하고 있는 코드를 han의 코드로 덮어쓰는거와 같다.)

 

위 과정들을 정리하면 내가 작성한 코드를 han에게 pull request를 보내면 han이 코드들을 합치고
나는 위에 적은 upstream 명령어를 통해 han이 합친 코드를 받을 수 있게 된다.

이 포스팅이 나같은 git 초보들에게 도움이 되었으면 좋겠다.