ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Github] Fork한 Repository 업데이트하기
    Git & Git hub 2021. 2. 11. 17:13
    728x90

    Fork 란

    fork는 다른 사람의 Github repository에서 내가 어떤 부분을 수정하거나 추가 기능을 넣고 싶을 때 해당 respository를 내 Github repository로 그대로 복제하는 기능이다.흔히 포크를 뜬다고 표현한다.

    wecode-bootcamp-korea repo에서 내 개인 repo로 포크를 떠와 리팩토링과 기능을 추가하고자 하였다.

    나는 당연히 포크로 떠온 개인 repo도 기존 repo의 변경사항이나 추가사항이 자동으로 업데이트되는줄 알고 있었는데

    업데이트가 되어 있지 않았다.

    포크를 뜰 당시의 상태에서 멈춰있는 문제를 발견하였다. 

    따라서 문제를 해결하기 위해 Fork한 Repository 동기화하는 방법을 찾아 해결 할 수 있었다.


    1. 먼저 원본 Repo 를 remote Repo로 추가해야 한다.

    Fork 해온 repository 에서 remote repository 를 확인하면 아래와 같이 나올 것이다.

    git remote -v
    

    아래의 Muntari29 이 현재 포크해온 Repo이다.

     

    동기화해오고 싶은 원본 Repo를 upstearm 이라는 이름으로 추가해준다.

    여기에 동기화해오고 싶은 원본 repository 를 upstream 이라는 이름으로 추가한다.

    upstearm이 추가된게 보인다. 여기서 https 주소는 동기화하고자 하는 원본 Repo 주소이다.

    git remote add upstearm https...


    2. upstream repo 로부터 최신 업데이트를 가져올 차례이다.

    Git 의 fetch 명령어를 통해 upstream repo의 내용을 불러오자.

    Why? => fetch

    backlog.com/git-tutorial/kr/stepup/stepup3_2.html

    더보기

    여기서 fetch 명령어는

    원격 저장소의 내용을 확인만 하고 로컬 데이터와 병합은 하고 싶지 않은 경우에는 사용하는 명령어라고 한다.

    git fetch명령은 원격 저장소에서 로컬 저장소로 커밋, 파일 및 참조를 업데이트한다.

    병합하고자 할 경우 아래와 같이(3번) merge 과정을 해주면 된다.

    사실 pull = fetch + merge 이다!

    그럼 왜 pull을 바로 쓰지않고 fetch + merge를 쓰는걸까

    fetch 명령어를 사용할 경우 FETCH_HEAD 라는 이름 없는 브랜치가 생긴다.

    이 브랜치에 Repo의 최신 이력들이 저장되는데 

    여기서 핵심은 fetch 명령어를 사용하면 병합을 강요받지 않는다는 것이다.

    원본 Repo와 개인 Repo 를 분리해주는 용도로 사용하며 개인 Repo 개발 작업에는 전혀 영향을 미치지 않는다고 한다.

    그렇기에 fetch는 개인 Repo 를 원본 Repo와 통합하기 전에 안전하게 파일을 검토하는 용도로 사용하기 때문이다.

    병합을 하고 싶지 않으면 않하면 되고

    병합을 하고 싶다면 그냥 하면 된다.

    Pull은 공격적인 merge라면 fetch는 비교적 안전한 merge 절차라고 할 수 있겠다!

    그렇기에 Repo 동기화는 기본적으로 fetch 를 사용한다

     

    git fetch upstearm


    3. upstream repo의 main branch (혹은 원하는 branch도 가능하다고 한다)로부터 local main branch 로 merge 한다.

    git merge upstearm/main


    4. Push

    이 과정까지는 local 환경이므로 push 를 통해 remote repo에 적용해주면 된다.

     

    나의 개인 Repo 동기화 완료!

     

    출처 : json.postype.com/post/210431

     

    [Git] Fork 한 repository 최신으로 동기화하기

    Fork 한 repository 를 최신으로 동기화시켜야 할 때가 있다. Open Source 에 단발성이 아닌 지속적으로 contribution 하려 할 때수정해서 사용하기 위해 fork 해온 원본 repository 에서 업데이트된 부분을 받아

    json.postype.com

     

    728x90

    'Git & Git hub' 카테고리의 다른 글

    [Git] Rebase  (0) 2021.02.18
    [Git] 브랜칭 전략  (0) 2021.02.16
Designed by Tistory.