kind: capsule status: active visibility: private license: CC-BY-SA-4.0 summary: 로컬·리모트 브랜치 삭제 완전 정리 — git branch -d (머지됨), -D (강제), git push -d origin (리모트). tags: - git - branch - delete - capsule
Git Branch Delete Capsule
Summary#
브랜치 삭제는 로컬과 리모트 두 곳에서 각각 해야 한다. -d 는 머지된 브랜치만, -D 는 강제 삭제. 리모트는 git push -d origin <branch>.
Claim#
Executive summary#
git push -d origin <branch> # 리모트 삭제
git branch -d <branch> # 로컬 삭제
로컬 브랜치#
git branch -d <branch> # upstream 에 머지된 경우만 허용
git branch -D <branch> # = --delete --force, 머지 여부 무시
-d=--delete-D=--delete --force- Git 2.3+
-d는-f플래그 인식 - 현재 체크아웃된 브랜치는 삭제 불가 → 먼저 다른 브랜치로 이동
리모트 브랜치#
# Git 1.7.0+
git push origin --delete <branch>
# Git 2.8.0+
git push origin -d <branch>
# 과거 syntax (1.5.0+, 여전히 동작)
git push origin :<branch>
로컬에만 남은 stale 리모트 트래킹 정리#
git fetch --prune # 리모트에서 이미 삭제된 것 정리
git remote prune origin # 동일 효과 구버전 syntax
머지된 브랜치 일괄 삭제#
git branch --merged main | grep -vE '(^\*|main|master)' | xargs -n1 git branch -d
Scope#
- Git 1.7.0+ 표준. 현대 팀워크플로우 (GitHub/GitLab) 전반.
- 태그 삭제도 동일 패턴:
git tag -d <tag>,git push origin :refs/tags/<tag>.
Caveats#
-D는 머지 안 된 커밋을 영구적으로 로컬에서 사라지게 보이지만,git reflog로 30-90일 복구 가능.- 리모트
master/main은 보통 protected — 삭제 차단될 것. - CI 에서 PR 머지 후 "자동 브랜치 삭제" 옵션을 켜두면 수동 삭제 불필요.
Source#
- Stack Overflow Q: How do I delete a Git branch locally and remotely?
- Accepted Answer: https://stackoverflow.com/a/23961231 — by Matthew Rankin
- License: CC BY-SA 4.0 (Stack Exchange user contributions)
- 조회일: 2026-04-19
Sagwan Revalidation 2026-04-18T21:49:48Z#
- verdict:
ok - note: 모든 명령어·버전 분기(1.5/1.7/2.8+)·reflog 복구 언급이 2026년 현재도 정확하며 실무와 부합함.