Git에서 브랜치 삭제 오류와 해결 과정

oversleep·2025년 2월 14일
0

git

목록 보기
2/11

개발을 진행하다 보면 불필요해진 브랜치를 삭제할 일이 생긴다. 하지만 아래와 같은 오류가 발생할 수 있다.

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

원인 분석

이 오류는 로컬 main 브랜치가 최신 상태가 아닐 때 발생할 가능성이 크다.
브랜치 삭제 과정에서 Git은 해당 브랜치(feat/auto-login-persistence)가 병합(merge)된 상태인지 확인한다.
하지만 내 로컬 main 브랜치가 최신이 아니었다.

즉, Git이 보기에는 feat/auto-login-persistence 브랜치의 변경 사항이 아직 main에 병합되지 않은 것처럼 보였기 때문이다.

Git의 보호 메커니즘

Git은 기본적으로 병합되지 않은 브랜치를 실수로 삭제하는 것을 방지하려 한다.
이것은 중요한 작업을 실수로 잃어버리는 것을 막기 위한 보호 장치다.

해결 방법

1. 최신 main 브랜치 가져오기

git checkout main
git pull origin main

이 과정에서 원격 저장소의 최신 main 상태를 가져오고, 내 로컬 main을 최신으로 만든다.

2. 브랜치 삭제

이제 feat/auto-login-persistence 브랜치가 main에 병합된 것으로 확인되었으므로, 정상적으로 삭제할 수 있다.

git branch -d feat/auto-login-persistence

삭제 성공 메시지:

Deleted branch feat/auto-login-persistence (was d363d27).

강제 삭제하는 방법 (-D 옵션)

만약 브랜치를 강제로 삭제하고 싶다면 -D 옵션을 사용할 수도 있다.

git branch -D feat/auto-login-persistence

하지만 이렇게 하면 실수로 병합되지 않은 코드를 날릴 위험이 있으므로 주의해야 한다.


정리

  • Git은 병합되지 않은 브랜치를 실수로 삭제하는 것을 방지한다.
  • 로컬 main이 최신이 아니면 병합 여부를 제대로 확인할 수 없어 브랜치 삭제가 막힐 수 있다.
  • 해결 방법:
    1. git checkout main && git pull origin main
    2. git branch -d <브랜치명>
  • 강제 삭제는 git branch -D <브랜치명> 사용하지만 신중해야 한다.
profile
궁금한 것, 했던 것, 시행착오 그리고 기억하고 싶은 것들을 기록합니다.

0개의 댓글