Git 브랜치 삭제에 대해 -d와 -D 옵션 차이를 알면 훨씬 편합니다. 특히 병합하지 않은 브랜치 강제 삭제가 필요할 땐 git branch -D 브랜치명 명령어가 꼭 도움이 됩니다.
Git 브랜치 삭제, 왜 잘 헷갈릴까요?
병합된 브랜치는 삭제해도 안전하지만, 병합되지 않은 브랜치는 한 번 삭제하면 작업 내용이 완전히 사라질 위험이 있어서 그렇죠.
그래서 Git은 기본적으로 안전한 삭제 방법을 제공하고, 정말로 필요할 때만 강제로 삭제하도록 옵션을 구분해 두었습니다. 이 원리만 알면 삭제할 때 나오는 여러 메시지에도 빨리 적응할 수 있습니다.
git branch -d 와 -D 옵션, 차이가 뭘까요?
-d 옵션은 병합이 완료된 브랜치만 삭제할 수 있게 만들어진 안전장치 같은 거예요. 반면에 -D는 병합 여부와 상관없이 강제로 브랜치를 지우는 옵션입니다.
즉, -d는 Git이 확인 과정에 신경 쓰는 방식이고, -D는 경고 없이 즉시 삭제 처리한다는 뜻입니다. 중요한 브랜치를 실수로 날리는 일을 막으려면 이 차이를 꼭 기억하는 게 좋아요.
병합하지 않은 브랜치 강제로 지우는 D 옵션, 어떻게 쓸까요?
아직 main이나 develop에 합치지 않은 브랜치를 삭제할 일이 있을 때는 git branch -D 브랜치명을 사용하면 됩니다.
예를 들면, 로컬에서 작업하다 만든 테스트용 브랜치 login-feature가 필요 없으면 아래처럼 입력합니다.
git branch -D login-feature
이 명령은 병합 여부에 관계없이 브랜치를 바로 삭제해 줍니다. 임시로 만들었던 작업 공간을 정리할 때 아주 편리하죠.
브랜치 삭제 전에 꼭 체크해야 할 건 뭘까요?
삭제하기 전에 항상 현재 위치한 브랜치가 어디인지 확인하는 습관을 들이는 게 중요합니다. 왜냐하면 현재 작업 중인 브랜치는 바로 삭제할 수 없기 때문입니다.
현재 브랜치를 알기 위해서는 아래 명령어를 쓰시면 됩니다.
git branch
별표(*)가 붙은 브랜치가 현재 체크아웃된 상태인데, 이 상태에서는 삭제가 안 되므로 다른 브랜치로 먼저 이동해야 해요. 보통은 main이나 develop으로 옮긴 뒤 삭제합니다.
실무에서 자주 쓰는 깔끔한 브랜치 정리 순서는?
업무 현장에서는 병합 상태를 꼭 확인하고 삭제하는 과정을 거칩니다. 필요하면 원격 저장소에 있는 브랜치도 함께 삭제해서 깔끔하게 관리하게 되죠. 단순히 로컬만 지우면 저장소 내부에는 여전히 남아 있게 됩니다.
| 상황 | 명령어 |
|---|---|
| 병합된 로컬 브랜치 삭제 | git branch -d 브랜치명 |
| 병합하지 않은 브랜치 강제 삭제 | git branch -D 브랜치명 |
| 원격 브랜치 삭제 | git push origin --delete 브랜치명 |
이런 식으로 상황별로 명확히 구분해서 작업하면 실수도 줄고 혼란도 없어집니다. 아, 로컬과 원격 브랜치를 삭제하는 건 아예 다른 작업이라는 점도 잊지 마세요.
혹시 헷갈릴 때 기억하면 좋은 한 줄은?
-d는 안전하게 삭제, -D는 강제로 삭제할 때 씁니다. 병합하지 않은 브랜치 강제 삭제가 필요하면 git branch -D 브랜치명를 사용하면 되고, 현재 브랜치는 다른 곳으로 먼저 이동하고 삭제해야 합니다.
자주 묻는 질문
git branch -d와 -D 차이가 무엇인가요?
-d는 병합된 브랜치 safe 삭제, -D는 강제 삭제입니다.
병합되지 않은 브랜치도 삭제할 수 있나요?
네, git branch -D로 강제 삭제할 수 있어요.
현재 작업 중인 브랜치는 바로 삭제할 수 있나요?
아니요. 다른 브랜치로 바꾼 후 지워야 합니다.
브랜치 정리하면서 꼭 기억하면 좋을 팁
브랜치 삭제는 단순한 정리 같지만, 작업 기록과 연결되어 있기 때문에 한번 더 확인하고 진행하는 게 좋습니다. 특히 협업 환경에서는 누가 어떤 브랜치를 쓰는지 모르는 경우가 많아 작업 이력을 꼼꼼히 살펴보는 게 안전하죠.
개인 프로젝트라면 테스트 브랜치를 과감하게 지워도 되지만, 팀에서는 삭제 전 꼭 병합 여부와 원격 상태를 체크하는 습관을 가지는 게 실수를 줄이는 지름길입니다.