새벽의 기록

[Git] Git "error: The branch 'x' is not fully merged" 본문

[Git]

[Git] Git "error: The branch 'x' is not fully merged"

OneTen 2024. 3. 28. 16:32

깃허브에서 삭제한 브랜치들이 vscode 에서는 계속해서 보이는 경우가 있었다.

원인을 알지도 못하고 그냥 직접 삭제해도 별 문제 없어서 무시했었는데 이번에 원인을 알게 되어서 기록한다.

 

구글링을 통해 여러 사람들의 사례를 찾아봐도 나와 같은 사례는 찾지 못해 stackoverflow에서 해결했다.

깃허브에서 보이는 브랜치들
 

 깃허브에서 보이는 브랜치 목록

 




vs code 에서 보이는 브랜치 목록

 


error: The branch 'feature/7.6' is not fully merged.
If you are sure you want to delete it, run 'git branch -D feature/7.6'.

브랜치를 삭제하려고 시도했더니 나온 에러문이다.

 

위의 문구에서는 error라고 표시되지만 실제로는 error보다는 warning에 가깝다고 한다.

이 error는 삭제하려는 브랜치에 해당 업스트림 브랜치 또는

HEAD 중 어느 것에서도 도달할 수 없는 커밋이 포함되어 있어서 발생한다.

 

즉 이대로 브랜치를 삭제할 경우 해당 브랜치에 있는 커밋을 잃을 수 있는 경우이다.

 

근데 의아한 점은 나는 분명 커밋과 푸시를 모두 끝내고 Pull Request를 통해 merge까지 했는데 이 에러가 발생했다. 

깃허브의 main 브랜치에서도 지우고자 하는 로컬 브랜치에서의 커밋 로그가 제대로 관측되고 있어서 이유를 알 수 없었다.

 

그래서 끙끙거리던 와중에 혹시? 싶어서 아래 명령어를 입력해봤다.

git branch -vv

 

이 명령어는 현재 브랜치들과 그 브랜치들의 커밋 현황을 함께 보여준다.

그랬더니 놀랍게도 아래와 같은 결과를 확인할 수 있었다.

 

깃허브에서 Pull Request 하는 과정에서 PR 변호까지 함께 Commit 되어 Commit 메세지가 달랐던 것이다.

 

vs code에서는 이 둘이 서로 다른 커밋으로 인식해서

이대로 브랜치를 삭제하면 커밋을 잃을 수도 있다고 판단한 것으로 보인다.

 

결론은 그냥 깃허브에서 PR 후 브랜치 삭제까지 해주면 로컬에서와의 커밋 메세지가 달라서 경고를 띄워준다는 것이다.

 

그래서 그냥 일일이 삭제해 주는 수밖에 없다.

 

그냥 -d 로는 계속 경고를 띄우니 -D로 삭제해야 한다.

git branch -D 브랜치명

참조

https://stackoverflow.com/questions/7548926/git-error-the-branch-x-is-not-fully-merged

 

Git "error: The branch 'x' is not fully merged"

Here are the commands I used from the master branch git branch experiment git checkout experiment Then I made some changes to my files, committed the changes, and pushed the new branch to GitHub. ...

stackoverflow.com

 

 

 

Comments