View

배경

fork를 사용할 수 없는데 다른 프로젝트의 변경사항을 지속적으로 가져와야하는 상황이 있었다.
이를 해결하기위해 방법을 찾아본 결과 remote를 추가한 뒤 merge를 할 때 --allow-unrelated-histories 옵션을 사용해서 해결할 수 있었다.
삽질을 많이 했었기 때문에 간단한 거지만 기록해보려한다.

remote 추가하기

현재 등록된 remote는 내 프로젝트다.

$ git remote -v
origin https://github.com/woriwori/empty-project.git

변경사항을 트랙킹하고 싶은 프로젝트를 upstrem remote 로 등록한다.

$ git remote add upstream https://github.com/woriwori/upstream-project.git
$ git remote -v
origin https://github.com/woriwori/empty-project.git
upstream https://github.com/woriwori/upstream-project.git

upstream remote의 히스토리를 가져온다.

$ git fetch upstream

병합하고 싶은 upstream remote의 브랜치를 현재 브랜치에 merge한다.

$ git merge upstream/main --allow-unrelated-histories

allow-unrelated-histories
upstream으로 등록한 프로젝트와 내 프로젝트는 공통 커밋이 없기 때문에 서로 관련이 없는 프로젝트로 인식되어 merge를 할 수 없다.
이 옵션을 사용하면 관련없는 프로젝트를 merge할 수 있다.

upstream의 변경사항 가져오기

upstream remote의 히스토리를 가져온다.

$ git fetch upstream

upstreamremote의 브랜치를 현재 브랜치에 merge한다.

$ git merge upstream/main --allow-unrelated-histories

결론

다 쓰고나니 굉장히 간단하고 별거 아닌 거 같은데....처음에는 allow-unrelated-histories 옵션을 사용해야한다는 걸 몰라서 push, pull, rebase 등등 별걸 다해봤고 그 과정에서 테스트 프로젝트를 여러번 생성하게 되어 시간이 많이 걸렸다.
allow-unrealted-histories 옵션은 예전에 무슨 에러(기억안남)를 해결하기 위해 구글링해서 사용했던 기억은 있다. 하지만 정확한 의미를 이해하고 쓰진 않았던 것 같다.
이번 기회에 allow-unrealted-histories 옵션이 필요한 상황과 이 옵션을 통해 어떤 결과가 발생하는지 이해할 수 있었다.
아 git 잘하고 싶다~~

 

 

 
Share Link
reply