rein's world

TIL: git-gone

10년쯤 전에 gerrit을 한창 쓰던 때에 더 필요치 않은 local branch 지우는게 불편하다고 글을 썼었다.

지금 일하는 회사에서는 GitHub PR 기반으로 작업하고 있어서, 이 문제가 좀 더 쉽게 풀 수 있는데, git-gone 이란 CLI 도구를 쓸 수 있다.

# 더 이상 upstream이 없는 (있었다가 merge하거나 닫아서 없어진) branch 확인
$ git gone list
branch-foo
branch-bar

# 이에 해당하는 branch들 제거; 만약 다른 worktree 등에서 참조 중이면 지우지 않는다.
$ git gone prune
Deleted branch-foo (restore with `git checkout -b branch-foo <commit hash>`)
Skipped deleting branch-bar due to Error { code -1, klass: 4, message: "..."}

특히 git gone prune 는 그 자체로도 유용한 명령이지만, 지워진 branch를 되살릴 수 있는 명령어를 출력에 포함시켜서 실수로 지운 경우엔 바로 되돌릴 수 있어서 편한 마음으로 명령어를 부르게 해준다. 그리고 다른 worktree1에서 사용하고 있는 branch는 지워지지 않으니 역시 안심하고 쓸 수 있다.


  1. git worktree ... 하는 명령어로 추가 작업 디렉터리를 다른 브랜치를 checkout해서 쓸 수 있는 기능이 있다. ↩︎