브랜치에서 작업하고 원격저장소로 push는 되는데 main브랜치로 pr을 날리는 과정에서 다음과 같은 에러가 뜨는 경우가 있다
There isn't anything to compare. main and branch are entirely different commit histories.
이는 branch
브랜치를 main
브랜치로 병합하는 과정에서 완전히 다른 커밋 히스토리를 갖고 있기 때문에 발생하는 문제이다.
아래의 그림과 같이 시작점(base)이 서로 완전히 다르기 때문에 합치지도 못하는 것이다.
이 문제를 해결하기 위해 리베이스(rebase)나 머지(merge)등의 방법을 사용하여 두 브랜치를 합칠 수 있다.
rebase
는 하나의 브랜치 base를 다른 브랜치의 최신 Commit으로 base로 옮겨서 Merge하는 방식이다.
rebase에 대해 더 자세히 알고싶다면???
Merge에도 전략이 있다?! (Merge, Rebase, Squash 파헤치기)
아래의 명령어로 branch 브랜치로 이동해서 branch 브랜치의 base를 main 브랜치로 옮길 수 있다.
git checkout branch // branch 브랜치로 이동
git rebase main //branch 브랜치의 base를 main 브랜치로 옮기기
그러면 두 브랜치의 커밋 히스토리가 합쳐지고 pr을 날릴 수 있게 된다!
이제 pr을 날려branch
브랜치를 main
브랜치로 병합해보자
그러면 커밋 히스토리가 아래와 같이 합쳐진다.
There isn't anything to compare 에러 원인
=> 두 브랜치의 커밋 히스토리가 다르기 때문!
해결 방법
=> rebase로 커밋 히스토리를 맞춰주자
git checkout branch
git rebase main