맨날 병합하고 삭제된 브랜치를 수동으로 삭제하다가 git prune도 귀찮아졌다.
그래서 아래 스크립트를 추가해서 사용중인데 괜찮은 것 같다.
pull-clean
을 하면 main브랜치로 옮겨가고, 원격에서 없어진 브랜치들을 로컬에서도 삭제하는 방식이다.
"list-gone-branches": "git fetch -p && git branch -vv | awk '/: gone]/{print $1}'",
"delete-gone-branches": "git fetch -p && git branch -vv | awk '/: gone]/{print $1}' | xargs git branch -D",
"pull-clean": "git switch main | npm run delete-gone-branches"
=> 2024.12.11 수정
위 스크립트에서 bash 가 한국어 설정이 되어 있을 때와 이미 브랜치가 삭제되어서 없는 상황에 대한 처리가 되지 않아 제대로 로컬 브랜치가 지워지지 않는 문제가 있었다.
정규식을 통해 한글과 영어로 된 브랜치 삭제/없음 케이스들을 처리하자. 영어로는 삭제됨과 없음이 "gone"으로 퉁쳐서 표현된다.
"delete-gone-branches": "git fetch -p && git branch -vv | awk '/: 삭제됨]|: gone]|: 없음]/{print $1}' | xargs git branch -D"
있다. 내가 생각하기에는 아래 방법이 더 좋은 것 같다.
현재 husky를 활용해서 pre-commit
과 pre-push
훅을 프리티어와 린트검사에 사용하고 있다.
그런데 이것 말고도 post-merge
라는 훅이 하나 더 있다. 자세한 내용은 (링크)깃북을 읽어보고 일단 따라해보자.
npm install husky --save-dev
npx husky install
yarn add husky -D
yarn husky init
파일 이름을 post-merge
로 짓는다.
# .husky/post-merge
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
# This command will be run after pulling changes
# npm 사용 시
npm run delete-gone-branches
#yarn 사용 시
yarn run delete-gone-branches
위에 언급한 delete-gone-branches를 등록해주자.
브랜치 머지 후, main에서 pull을 받아보자.
나는 post-merge가 더 좋아보여서 사용했지만, post-checkout을 사용해도 괜찮아보인다.