깃 브랜치 싹 비우기: 병합 끝난 목록 안전하게 치우는 노하우
개발하다 보면 깃 브랜치가 산더미처럼 쌓여서 당황스러운 순간이 꼭 오더라고요. 프로젝트 하나 끝내고 나면 목록이 너무 길어져서 내가 지금 어디서 작업하는지 헷갈리기도 하죠. 그래서 오늘은 미루고 미뤘던 로컬 브랜치 삭제 방법을 제대로 정리해 보려고 합니다. 깔끔한 작업 환경을 만들고 싶은 분들이라면 이번 글이 큰 도움이 될 거예요.
안전하게 혹은 강제로? 기본 명령의 차이점은 무엇일까요?
일단 가장 기본은 git branch -d 명령어를 쓰는 거예요. 이건 깃이 똑똑하게 병합이 잘 됐는지 확인하고 지워주거든요. 그런데 가끔 “아직 합쳐지지 않았어!”라면서 거부할 때가 있죠. 그럴 때 바로 로컬 브랜치 삭제 끝판왕인 -D 옵션을 꺼내야 합니다. 대문자 D는 묻지도 따지지도 말고 지우라는 뜻이라서 신중해야 하지만, 정말 필요할 땐 이만한 게 없죠.
| 옵션 | 주요 특징 | 추천 상황 |
|---|---|---|
| -d | 안전한 소거 방식 | 일반적인 병합 완료 시 |
| -D | 강력한 강제 제거 | 스쿼시 병합이나 실험 중단 시 |
Squash 병합 후에 목록이 안 사라진다면 어떻게 하나요?
PR(Pull Request) 날릴 때 Squash merge를 자주 쓰시나요? 그러면 일반적인 방식으로는 매끄러운 로컬 브랜치 삭제 과정이 어려울 수 있어요. 커밋 내역이 하나로 합쳐지면서 깃이 동일한 작업인지 인식을 못 하기 때문인데요. 이럴 때는 메인과 직접 비교해서 차이가 없다면 과감히 날려버리는 과정이 필요합니다. git branch --merged에 뜨지 않아도 당황하지 말고 상태를 체크해 보세요.
일일이 지우기 귀찮을 때 쓰는 꿀팁은?
브랜치가 수십 개면 일일이 지우기 정말 힘들죠. 저는 간단한 쉘 함수를 만들어서 활용합니다. git fetch --prune으로 리모트 정보를 맞춘 뒤에, 이미 합쳐진 것들만 골라내는 스크립트죠. 이렇게 로컬 브랜치 삭제 자동화를 해두면 명령어 한 번에 쾌적한 환경을 되찾을 수 있답니다. 제가 쓰는 방식은 리모트에 없는 것들까지 꼼꼼히 확인해서 안전하게 처리하는 편이에요.
리모트 찌꺼기까지 확실히 정리하는 prune 활용법
깃허브에서 브랜치를 지웠어도 내 컴퓨터에는 유령처럼 남아있는 경우가 많아요. 이럴 땐 git remote prune origin을 기억하세요. 로컬에 남은 죽은 참조들을 싹 청소해 주거든요. 여기에 로컬 브랜치 삭제까지 병행하면 드디어 완벽한 정리가 끝납니다. 주기적으로 이 작업을 해주면 깃 로그 보기가 훨씬 편해지실 거예요.
- 작업 전 현재 위치가 main인지 꼭 확인하세요.
- 중요한 코드가 있다면 미리 push해두는 습관이 필요해요.
- 강제 옵션은 되돌리기 어려우니 두 번 생각하고 입력합시다.
정리는 습관이라고들 하잖아요? 깃 관리도 마찬가지인 것 같아요. 매번 작업이 끝날 때마다 불필요한 것들을 비워내면 협업할 때 실수도 줄어들고 마음까지 가벼워집니다. 오늘 공유한 팁으로 여러분의 저장소도 깨끗하게 유지해 보세요!
자주 묻는 질문
합쳐지지 않은 건 어떡하죠?
-D 옵션으로 강제 지우세요.
원격만 지워졌을 때는요?
prune 명령어로 정리해요.
실수로 지우면 복구되나요?
reflog로 되살릴 수 있어요.