[Git] There isn't anything to compare (브랜치 커밋 기록이 다를 때 pr이 안되는 문제 해결 방법)

송하연·2024년 3월 13일
0
post-thumbnail

문제 : pull request가 안된다?!

브랜치에서 작업하고 원격저장소로 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

profile
개발 기록 끄적끄적✏️ #백엔드개발자

0개의 댓글