홍차의 미로찾기

[git] git branch 삭제가 안되는 이유 본문

프로그래밍/GIT

[git] git branch 삭제가 안되는 이유

홍차안디 2024. 7. 10. 18:15
반응형

[git] git 설정 프로세스 모음

 

 

보통 git에서 branch를 삭제하기 위해서 아래와 같은 명령어를 사용합니다.

git branch -d (삭제할 브랜치 명)

 

하지만 가끔 터미널에서 에러를 주면서 삭제가 되지 않는 경우가 있습니다.

 

브랜치 삭제가 되지 않는 경우

1. 삭제하려는 브랜치에 위치한 경우

 

💡 error: cannot delete branch 'second' used by worktree at ~/gitTestProject’

 

삭제하려는 브랜치에 switch한 상태일 때 발생하는 에러입니다.

이런 경우에는 다른 브랜치로 switch한 후 삭제를 진행합니다.

 

2. 병합되지 않은 내용이 있을 경우

 

💡 error: the branch 'second' is not fully merged hint: If you are sure you want to delete it, run 'git branch -D second' hint: Disable this message with "git config advice.forceDeleteBranch false"

 

현재 위치한 브랜치에 병합되지 않은 내용이 존재할 때 발생합니다.

지우려고 하는 브랜치에 있는 커밋 내용현재 위치한 브랜치에 존재하지 않으니 병합을 먼저 진행해서 데이터 유실을 방지하기 위함입니다.

 

 

실습해보기

 

두 번째 경우에 대해서 좀 더 자세히 알아보겠습니다.

 

우선, 현재 main 브랜치가 존재합니다.

# branch 목록 조회
git branch

git branch 명령어 결과

 

main으로부터 first 브랜치를 하나 생성해보겠습니다.

# branch 생성과 동시에 전환
main >> git switch -c first

 

새롭게 생성된 first 브랜치에 변경사항을 하나 적용해서 commit을 진행합니다.

# first branch에서 변경사항 적용 및 커밋
first >> git add .
first >> git commit -m 'commit'

 

아래는 현재 git 브랜치들의 상태입니다.

# git branch들의 연관관계 그래프로 출력
git log --all --oneline --graph

first 브랜치에 commit 한 이후 상태

 

 

이후, first 브랜치로부터 second 브랜치를 생성합니다.

first >> git branch second

 

first 브랜치로부터 second 브랜치 생성

 

 

이 상태에서 main으로 switch한 뒤, second 브랜치 삭제 명령을 내려보겠습니다.

first >> git switch main
main >> git branch -d second //에러발생

 

아래와 같은 에러가 발생합니다.

💡 error: the branch 'second' is not fully merged hint: If you are sure you want to delete it, run 'git branch -D second' hint: Disable this message with "git config advice.forceDeleteBranch false"

 

 

에러 원인

 

현재 first 브랜치에 새로운 commit이 존재하고 main 브랜치에 merge가 되지 않았습니다.

또한 second 브랜치first 브랜치로부터 파생되었습니다.

즉, first 브랜치의 변경사항second에는 존재하지만 main 브랜치에는 존재하지 않습니다.

 

-> 브랜치 삭제 기능은 현재 위치한 브랜치변경 사항을 모두 병합한 후 삭제할 수 있습니다.

 

 

해결 방법

따라서 second 브랜치를 삭제하기 위해서는 다음과 같은 세 가지 방법이 존재합니다.

 

방법1) second 브랜치의 변경사항을 main에 병합

방법2) first 브랜치로 switch 한 후 second 브랜치 삭제

방법3) -D 옵션을 사용하여 병합되지 않은 브랜치 강제 삭제

# 병합되지 않은 브랜치 강제 삭제
git branch -D (삭제할 브랜치 명)
반응형
Comments