출력에 나열된 모든 분기를 삭제하고 싶습니다.
$ git branch
…하지만 한 단계로 현재 분기를 유지 합니다 . 가능합니까? 그렇다면 어떻게?
답변
@pankijs 답변에 따라 두 개의 git 별칭을 만들었습니다.
[alias]
# Delete all local branches but master and the current one, only if they are fully merged with master.
br-delete-useless = "!f(){\
git branch | grep -v "master" | grep -v ^* | xargs git branch -d;\
}; f"
# Delete all local branches but master and the current one.
br-delete-useless-force = "!f(){\
git branch | grep -v "master" | grep -v ^* | xargs git branch -D;\
}; f"
추가 예정 ~/.gitconfig
그리고 @torek이 지적했듯이 :
소문자
-d
는 “완전히 병합되지 않은”분기를 삭제하지 않습니다 (문서 참조). 을 사용-D
하면 이러한 분기가 삭제 됩니다. 이로 인해 커밋이 “손실”되는 경우에도 마찬가지입니다. 이 방법을 사용 하면 분기 리플 로그도 삭제되므로 일반적인 “실수로 인한 삭제에서 복구”항목도 작동하지 않습니다.
기본적으로 -force
중요한 것을 잃지 않을 것이라고 300 % 확신하지 않는다면 절대로 버전을 사용하지 마십시오 . 영원히 잃어 버렸기 때문 입니다.
답변
$ git branch | grep -v "master" | xargs git branch -D
마스터를 제외한 모든 브랜치를 삭제합니다 (마스터를 유지하려는 브랜치로 교체하지만 마스터는 삭제됩니다)
답변
먼저 (유지하려는 브랜치> ex : master로 전환 ) :
git checkout master
두 번째 ( 마스터 에 있는지 확인하십시오 )
git branch -D $(git branch)
답변
git branch -d
(또는 -D
)은 여러 브랜치 이름을 허용하지만, 최소한 약간의 코드를 작성하지 않고 “지금 내가있는 브랜치를 제외한 모든 로컬 브랜치”를 자동으로 제공하는 것은 약간 까다 롭습니다.
“가장 좋은”(공식적으로 올바른) 방법은 git for-each-ref
분기 이름을 가져 오는 데 사용 하는 것입니다.
git for-each-ref --format '%(refname:short)' refs/heads
하지만 어느 브랜치에 있는지 알아 내기가 훨씬 더 어렵습니다 ( git symbolic-ref HEAD
멋진 스크립트를 작성하려는 경우 “공식적으로 올바른”방법입니다).
더 편리하게 사용할 수 있습니다. git branch
, 두 개의 공백 또는 (현재 분기의 경우) 별표가 앞에있는 로컬 분기 이름을 인쇄합니다 *
. 따라서 *
버전 을 제거하기 위해 이것을 실행하면 공백으로 구분 된 브랜치 이름이 남습니다. 그러면 다음으로 전달할 수 있습니다 git branch -d
.
git branch -d $(git branch | grep -v '^*')
또는:
git branch | grep -v '^*' | xargs git branch -d
소문자 -d
는 “완전히 병합되지 않은”분기를 삭제하지 않습니다 (문서 참조). 을 사용 -D
하면 커밋이 “손실”되더라도 그러한 분기가 삭제됩니다. 이 방법을 사용하면 분기 리플 로그도 삭제되므로 일반적인 “실수로 인한 삭제에서 복구”항목도 작동하지 않습니다.
답변
답변
특정 분기를 제외한 모든 분기 삭제 :
git branch | grep -v "branch name" | xargs git branch -D
개발 및 마스터를 제외한 모든 로컬 분기 삭제
git branch | grep -v "develop" | grep -v "master" | xargs git branch -D
답변
Windows의 경우 Powershell에서 다음을 사용합니다.
git branch | %{ $_.Trim() } | ?{ $_ -ne 'master' } | %{ git branch -D $_ }