본문 바로가기

Git

[Git] Fork한 github소스 최신 버전으로 유지하기

Fork는 보통 남의 repository에 있는 소스를 가지고 오려는 상황에 씁니다.

 

 

* 원본 소스코드(내가 fork해오려는 레포지토리)가 있는 곳의 위치를 upstream 이라고 명명합니다. (보통 내 원격저장소의 이름은 master라고 명명하죠.) 아무튼 이 upstream이라는 이름으로 원본소스의 위치를 등록해줘야 합니다.

 

 

즉 우리가 할 것은

 1) upstream 등록 2) upsream 으로부터 소스코드 동기화 입니다. ( 아, 물론 fork 했던 레포를 날려버리고 새롭게 fork 해도 상당히 깔끔합니다. 내 깃헙에서 작업했던 히스토리가 중요하지 않다면요 )

 

 

1. Fork 해오려는 남의 레포지토리에서 Fork를 일단 합니다 (?) 아래 버튼 표시 눌러주면 됩니다.

그 후 로컬 저장소에 가져올 건데요.

# git clone <fork해온 내 repo에 있는 URL>

이러면 로컬 저장소에 해당 레포지토리가 생성됩니다.

 

 

2. 이제 upstream의 소스를 로컬로 가져올 겁니다. (내 원격 저장소 URL이 아닙니다. 남의 레포 URL 입니다.)

 

등록하기 전에 일단 로컬에 연결돼있는 원격 저장소가 뭐뭐 있는지 확인해봅니다.

 

 

Fork를 해본 적이 없다면, 보통은 위와 같이 Github에 있는 내 저장소만 등록되어 있을 겁니다.  

 

 

2. 이제 아래와 같이 남의 저장소에 “upstream”이란 이름을 주고 남의 저장소 URL을 입력해줍니다.  (이름은 사실 상관 없습니다. 하지만 우리가 원격 저장소 이름을 "master"라고 명명하듯 그런 암묵적인 규칙이라고 생각하시면 됩니다.)

 

 

 

3.  upstream이 제대로 등록됐는지 확인해줍니다.

 

 

 

4. fetch 명령어를 통해 남의 레포 소스를 로컬에 내려 받습니다. 사용법은 다음과 같습니다.

 

만일, 남의 레포에 브랜치a, 브랜치b가 있을 때 브랜치a 것만 내려받고 싶다면

$ git fetch upstream a 

라고 쳐주면 됩니다.

 

제 경우, 남의 소스에 특정 브랜치가 없고 master만 있으므로 $ git fetch upstream master를 한거나 다름없습니다.

 

5.  내려받은 남의소스코드를 실제 내 repository 에 merge 시켜줘야 합니다. 다음과 같이 진행하면 됩니다.

(fetch 해두었던 “upstream/master”를 merge하는 과정임)

 

 

 

이제 내쪽 repository 와 원본코드가 존재하는 repository 가 동기화 되었습니다. (물론 내 로컬에 merge된 것이지, github에다가 동기화시켜주려면 마지막에 push를 해줘야겠죠?)

 

빠르게 변하는 프로젝트일수록 동기화는 매우 중ㅡ요하다고 합니다. 

코드를 수정하거나 반영하기 전에 항상 동기화 해주는 습관이 필요하겠습니다 ! 

 

 

 

출처

https://jybaek.tistory.com/775