branch는 만들기도 지우기도 값싸
Branch hygiene는 1년 뒤에도 repo를 읽을 만하게 유지하는 정리 습관이야. 원칙은 간단해. 새 branch는 부담 없이 만들고 작업이 land하면 지워. 묵은 branch가 200개인 repo는 잡동사니 서랍이고, 활성 branch가 12개인 repo는 작업 공간이야. 규모나 팀 여부와 상관없이 효과가 있어.
이름이 큰 몫을 해. 많은 팀이 feature/, bugfix/, hotfix/, release/, chore/, experiment/ 같은 prefix namespace를 써. feature/short-summary 형식은 git branch -a에서도 잘 읽히고 도구가 묶어 보여주기도 좋아. issue나 ticket이 있다면 feature/142-oauth-github처럼 붙여. my-changes, fix, test 같은 막연한 이름은 충돌하기 쉽고 주는 정보도 없어.
삭제에는 두 방식이 있어. git branch -d feature/login은 upstream에 완전히 merge됐을 때만 삭제하므로 Git이 안전을 확인해줘. git branch -D는 조건 없이 강제로 삭제해. 평소에는 -d를 쓰고, merge하지 않은 채 의도적으로 버릴 branch에만 -D를 써. local branch를 지운 뒤에는 git push origin --delete feature/login으로 remote도 정리해. GitHub에는 PR merge 뒤 head branch를 자동 삭제하는 설정도 있어.
Pruning은 아무도 일정에 넣지 않지만 모두에게 필요한 정리야. git remote prune origin은 origin에서 사라진 upstream branch의 remote-tracking ref를 없애. git fetch --prune은 보통 fetch하면서 같은 일을 해. git config --global fetch.prune true를 설정해두면 잊어도 돼. git branch --merged main은 main에 완전히 merge된 local branch를 보여주므로 삭제 후보를 찾기 좋아. 가끔 실행해 repo를 읽을 만하게 유지해.