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 잘하고 싶다~~
'개발이야기 > 기타' 카테고리의 다른 글
[TDD] TDD의 3단계 과정으로 간단한 모듈 구현 (0) | 2021.07.17 |
---|---|
[TDD] Jest 시작하기 & 기본 문법 (0) | 2021.07.16 |