[git] 삭제된 원격브랜치를 로컬에도 반영하는 편한 방법

Seungrok Yoon (Lethe)·2024년 9월 10일
0

[TIL] 성장 한 스푼

목록 보기
53/53

맨날 병합하고 삭제된 브랜치를 수동으로 삭제하다가 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-commitpre-push 훅을 프리티어와 린트검사에 사용하고 있다.

그런데 이것 말고도 post-merge라는 훅이 하나 더 있다. 자세한 내용은 (링크)깃북을 읽어보고 일단 따라해보자.

husky 설치 및 초기화

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을 사용해도 괜찮아보인다.

참고

profile
안녕하세요 개발자 윤승록입니다. 내 성장을 가시적으로 기록하기 위해 블로그를 운영중입니다.

0개의 댓글