예를 들면 : 나는 세 가지의 톤이 내 로컬 저장소, 청소하고 싶습니다 3.2
, 3.2.1
, 3.2.2
, 등
나는 한 번에 많은 것을 제거하기 위해 비열한 방법을 원했습니다. 그들은 대부분 도트 릴리스 규칙을 따르기 때문에 어쩌면 말할 지름길이 있다고 생각했습니다.
git branch -D 3.2.*
3.2.x 가지를 모두 죽입니다.
나는 그 명령을 시도했지만 물론 작동하지 않았습니다.
답변
해당 구문이 아닙니다. 그러나 다음과 같이 할 수 있습니다.
git branch -D 3.2 3.2.1 3.2.2
기본적으로 자식 분기는 단일 호출로 여러 분기를 삭제합니다. 불행히도 지점 이름 완성을하지 않습니다. bash에서는 다음을 수행 할 수 있습니다.
git branch -D `git branch | grep -E '^3\.2\..*'`
답변
최악의 경우 다음을 사용할 수 있습니다.
git branch | grep '3\.2' | xargs git branch -d
답변
git branch | cut -c3- | egrep "^3.2" | xargs git branch -D
^ ^ ^ ^
| | | |--- create arguments
| | | from standard input
| | |
| | |---your regexp
| |
| |--- skip asterisk
|--- list all
local
branches
편집하다:
자식 브랜치 출력은 스크립팅에 사용되지 않기 때문에 더 안전한 버전 (Jakub Narębski 및 Jefromi에서 제안) :
git for-each-ref --format="%(refname:short)" refs/heads/3.2\* | xargs git branch -D
… 또는 xargs-free :
git branch -D `git for-each-ref --format="%(refname:short)" refs/heads/3.2\*`
답변
git branch –list를 사용하여 적합한 분기를 나열하고 git branch -D / -d를 사용하여 적합한 분기를 제거 할 수 있습니다.
한 라이너 예 :
git branch -d `git branch --list '3.2.*'`
답변
최근에, 나는 같은 문제의 해결책을 찾고 있었고 마침내 나는 하나의 대답을 찾았으며 매우 잘 작동하고 있습니다.
- 터미널 또는 이와 동등한 것을 엽니 다.
- 자식 분기에 입력 | 삭제 될 분기의 미리보기를 위해 grep “pattern”.
- 자식 분기에 입력 | grep “패턴”| xargs 자식 분기 -D
답변
사용하다
git for-each-ref --format='%(refname:short)' 'refs/heads/3.2.*' |
xargs git branch -D
답변
아마도 당신은 이것을 유용하게 사용할 수있을 것입니다 :
예를 들어 ‘master’, ‘foo’및 ‘bar’가 아닌 모든 분기를 제거하려면
git branch -D `git branch | grep -vE 'master|foo|bar'`
grep -v ‘something’은 반전 된 matcher입니다.