Git 병합된 분기를 일괄 삭제
문제
Git 브랜치는 원격 리포지토리에서 병합될 때 자동으로 삭제되지 않으므로 직접 삭제해야 합니다.
환경
$ git --version
git version 2.26.2
예비 지식
병합된 브랜치 표시
$ git branch --merged
보충: 병합되지 않은 브랜치 표시
$ git branch --no-merged
보충: 원격 리포지토리를 포함한 모든 브랜치 목록 보기
$ git branch --all
$ git branch -a
브랜치 삭제
$ git branch -d feature/issue-xxx
$ git branch -D feature/issue-xxx
-d
옵션이 병합되지 않은 분기는 삭제되지 않습니다.-D
옵션은 병합되지 않은 분기를 강제로 제거합니다.원격 리포지토리에서 삭제된 브랜치 삭제
git featch
할 때 prune
옵션을 붙이면 삭제된 브랜치를 삭제해 줍니다.$ git fetch --prune
$ git fetch -p
보충: 항상 prune 옵션 사용
$ git config --global fetch.prune true
주제
git fetch --prune
에서 리모트 리포지토리에서 삭제된 브랜치를 삭제한 후 git branch --merged
로 나온 브랜치를 삭제하면 됩니다.주의점으로서는,
master
나 development
와 같은 특정의 브랜치는 삭제 대상외로 하고 싶은 곳입니다.git alias
를 사용해도 괜찮습니다..gitconfig
하지만 zsh
에서도 작동하지만, bash
의 예로 진행합니다.zsh
에 다음 코드를 추가합니다.~/.zshrc
PROTECT_BRANCHES='master|development'
git-delete-merged-branch() {
git fetch --prune
git branch --merged | egrep -v "\*|${PROTECT_BRANCHES}" | xargs git branch -d
}
보호하려는 브랜치는
~/.zshrc
의 환경 변수에 PROTECT_BRANCHES
구분 기호로 추가하십시오.쉘의 구성 파일을 다시 읽습니다.
$ exec $SHELL -l
명령을 실행합니다. (Git이 관리하는 디렉토리에서 실행하십시오)
$ git-delete-merged-branch
시험에 실행하면 이런 느낌입니다.
보충: .gitconfig 별칭으로 할 경우
|
의 alias 설정으로 하고 싶은 경우는 아래와 같이 합니다.[alias]
delete-merged-branch = !git branch --merged | egrep -v '\\*|master|development' | xargs git branch -d
$ git delete-merged-branch
Git 관련 기사 요약
Reference
이 문제에 관하여(Git 병합된 분기를 일괄 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ucan-lab/items/97c53a1a929d2858275b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)