etc./StackOverFlow

병합된 모든 Git 브랜치를 어떻게 삭제할 수 있습니까?

청렴결백한 만능 재주꾼 2021. 12. 3. 08:21
반응형

질문자 :Nyambaa


많은 Git 브랜치가 있습니다. 이미 병합된 브랜치를 어떻게 삭제합니까? 하나씩 삭제하지 않고 모두 삭제하는 쉬운 방법이 있습니까?



업데이트:

워크플로에 가능한 상위 항목이 있는 경우 master 및 dev와 같이 제외할 다른 분기를 추가할 수 있습니다. 일반적으로 나는 "sprint-start" 태그에서 분기하고 master, dev 및 qa는 조상이 아닙니다.

먼저 원격에서 병합된 로컬 추적 분기를 나열합니다(다른 답변에서 제안한 대로 -r 플래그를 사용하여 모든 원격 추적 분기를 나열하는 것을 고려할 수 있음).

 git branch --merged

제거하고 싶지 않은 분기가 몇 개 표시될 수 있습니다. 마스터나 개발처럼 삭제하고 싶지 않은 중요한 분기를 건너뛰기 위해 몇 가지 인수를 추가할 수 있습니다. 다음 명령은 마스터 브랜치와 dev가 있는 모든 항목을 건너뜁니다.

 git branch --merged| egrep -v "(^\*|master|main|dev)"

건너뛰고 싶다면 다음과 같이 egrep 명령어에 추가하면 됩니다. skip_branch_name 브랜치는 삭제되지 않습니다.

 git branch --merged| egrep -v "(^\*|master|main|dev|skip_branch_name)"

현재 체크 아웃된 분기에 이미 병합된 모든 로컬 분기를 삭제하려면:

 git branch --merged | egrep -v "(^\*|master|main|dev)" | xargs git branch -d

master와 dev는 조상일 경우 제외된 것을 볼 수 있습니다.


다음을 사용하여 병합된 로컬 분기를 삭제할 수 있습니다.

 git branch -d branchname

병합되지 않은 경우 다음을 사용하십시오.

 git branch -D branchname

원격 사용에서 삭제하려면:

 git push --delete origin branchname git push origin :branchname # for really old git

원격에서 분기를 삭제하면 다음을 사용하여 원격 추적 분기를 제거하기 위해 정리할 수 있습니다.

 git remote prune origin

또는 다른 답변에서 알 수 있듯이 다음을 사용하여 개별 원격 추적 분기를 정리하십시오.

 git branch -dr branchname

Adam Dymitruk

이미 병합된 원격의 모든 분기를 삭제하려면:

 git branch -r --merged | grep -v master | sed 's/origin\//:/' | xargs -n 1 git push origin

최신 버전의 Git에서

 git branch -r --merged | grep -v master | sed 's/origin\///' | xargs -n 1 git push --delete origin

업데이트(@oliver 작성, 주석에 맞지 않지만 이미 충분한 답변이 있음) : ABC 분기에 있는 경우 분기가 지정되지 않았기 때문에 git branch -r --merged 현재 분기에 연결되고 분기는 항상 자체에 병합된 것으로 간주됩니다(분기와 자체 간에 차이가 없기 때문입니다!).

따라서 분기를 지정하십시오.

 git branch -r --merged master | grep -v master ...

또는 첫 번째 체크아웃 마스터:

 git checkout master | git branch -r --merged | grep -v ...

kuboon

Adam의 대답을 약간 확장하면 다음과 같습니다.

git config -e --global 을 실행하여 이를 Git 구성에 추가합니다.

 [alias] cleanup = "!git branch --merged | grep -v '\\*\\|master\\|develop' | xargs -n 1 git branch -d"

git cleanup 수행하여 병합된 모든 로컬 분기를 삭제할 수 있습니다.


real_ate

해당 명령에서 master , maindevelop 분기를 제외하고 싶을 것입니다.

로컬 자식 지우기:

 git branch --merged | grep -v '\*\|master\|main\|develop' | xargs -n 1 git branch -d

원격 자식 지우기:

 git branch -r --merged | grep -v '\*\|master\|main\|develop' | sed 's/origin\///' | xargs -n 1 git push --delete origin

원격 분기의 로컬 레지스트리 동기화:

 git fetch -p

Guido Bouman

이것은 또한 마스터를 제외한 모든 병합된 분기를 삭제하는 데 작동합니다.

 git branch --merged | grep -v '^* master$' | grep -v '^ master$' | xargs git branch -d

Ismael

Windows를 사용하고 PowerShell 스크립트를 선호하는 사용자를 위해 다음은 로컬 병합 분기를 삭제하는 스크립트입니다.

 function Remove-MergedBranches { git branch --merged | ForEach-Object { $_.Trim() } | Where-Object {$_ -NotMatch "^\*"} | Where-Object {-not ( $_ -Like "*master" or $_ -Like "*main")} | ForEach-Object { git branch -d $_ } }

또는 짧은 버전:

 git branch --merged | %{$_.trim()} | ?{$_ -notmatch 'dev' -and $_ -notmatch 'master' -and $_ -notmatch 'main'} | %{git branch -d $_.trim()}

Klas Mellbourn

나는 몇 년 동안 Adam의 대답을 사용했습니다. 즉, 예상대로 작동하지 않는 경우가 있습니다.

  1. "마스터"라는 단어가 포함된 분기는 무시되었습니다(예: 마스터 분기만이 아니라 "notmaster" 또는 "masterful").
  2. "dev"라는 단어가 포함된 분기는 무시되었습니다(예: dev 분기가 아니라 "dev-test").
  3. 현재 분기의 HEAD에서 도달할 수 있는 분기 삭제(즉, 마스터일 필요는 없음)
  4. 분리된 HEAD 상태에서 현재 커밋에서 도달할 수 있는 모든 분기 삭제

1과 2는 정규식만 변경하면 쉽게 해결할 수 있습니다. 3은 원하는 컨텍스트에 따라 다릅니다(즉, 마스터에 병합되지 않았거나 현재 분기에 대해 병합되지 않은 분기만 삭제). 4는 의도치 않게 분리된 HEAD 상태에서 실행한 경우 재앙이 될 가능성이 있습니다( git reflog

마지막으로 이 모든 것이 별도의 (Bash|Ruby|Python) 스크립트가 필요하지 않은 단일 라이너에 포함되기를 원했습니다.

TL;DR

-f 플래그를 허용하는 git 별칭 "sweep"을 만듭니다.

 git config --global alias.sweep '!git branch --merged $([[ $1 != "-f" ]] \ && git rev-parse master) | egrep -v "(^\*|^\s*(master|develop)$)" \ | xargs git branch -d'

다음과 같이 호출하십시오.

 git sweep

또는:

 git sweep -f

길고 자세한 답변

올바른 동작을 테스트하기 위해 일부 분기와 커밋으로 예제 git repo를 만드는 것이 가장 쉬웠습니다.

단일 커밋으로 새 git repo 생성

 mkdir sweep-test && cd sweep-test && git init echo "hello" > hello git add . && git commit -am "initial commit"

몇 가지 새 분기 만들기

 git branch foo && git branch bar && git branch develop && git branch notmaster && git branch masterful git branch --list
 bar develop foo * master masterful notmaster

원하는 동작: 마스터, 개발 또는 현재를 제외한 모든 병합 분기 선택

원래 정규식은 "masterful" 및 "notmaster" 분기를 놓치고 있습니다.

 git checkout foo git branch --merged | egrep -v "(^\*|master|dev)"
 bar

업데이트된 정규식(이제 "dev"가 아닌 "develop" 제외):

 git branch --merged | egrep -v "(^\*|^\s*(master|develop)$)"
 bar masterful notmaster

foo 브랜치로 전환하고 새 커밋을 만든 다음 foo를 기반으로 하는 새 브랜치 foobar를 체크아웃합니다.

 echo "foo" > foo git add . && git commit -am "foo" git checkout -b foobar echo "foobar" > foobar git add . && git commit -am "foobar"

현재 내 브랜치는 foobar이고 위의 명령을 다시 실행하여 삭제하려는 브랜치를 나열하면 master에 병합되지 않은 경우에도 "foo" 브랜치가 포함됩니다.

 git branch --merged | egrep -v "(^\*|^\s*(master|develop)$)"
 bar foo masterful notmaster

그러나 마스터에서 동일한 명령을 실행하면 "foo" 분기가 포함되지 않습니다.

 git checkout master && git branch --merged | egrep -v "(^\*|^\s*(master|develop)$)"
 bar masterful notmaster

그리고 이것은 단순히 git branch --merged 달리 지정되지 않은 경우 현재 분기의 HEAD로 기본 설정되기 때문입니다. 적어도 내 워크플로에서는 마스터로 병합되지 않는 한 로컬 분기를 삭제하고 싶지 않으므로 git rev-parse를 사용 하는 다음 변형을 선호합니다.

 git checkout foobar git branch --merged $(git rev-parse master) | egrep -v "(^\*|^\s*(master|develop)$)"
 bar masterful notmaster

분리된 HEAD 상태

git branch --merged 의 기본 동작에 의존하는 것은 분리된 HEAD 상태에서 훨씬 더 중요한 결과를 낳습니다.

 git checkout foobar git checkout HEAD~0 git branch --merged | egrep -v "(^\*|^\s*(master|develop)$)"
 bar foo foobar masterful notmaster

이것은 내가 방금 있던 "foobar"와 "foo"를 삭제했을 것입니다. 이는 원하는 결과가 거의 확실하지 않습니다. 그러나 수정된 명령을 사용하면 다음을 수행할 수 있습니다.

 git branch --merged $(git rev-parse master) | egrep -v "(^\*|^\s*(master|develop)$)"
 bar masterful notmaster

실제 삭제를 포함하여 한 줄

 git branch --merged $(git rev-parse master) | egrep -v "(^\*|^\s*(master|develop)$)" | xargs git branch -d

모두 git 별칭 "sweep"으로 래핑됩니다.

 git config --global alias.sweep '!git branch --merged $([[ $1 != "-f" ]] \ && git rev-parse master) | egrep -v "(^\*|^\s*(master|develop)$)" \ | xargs git branch -d'

별명은 선택적 -f 플래그를 승인합니다. 기본 동작은 마스터에 병합된 분기만 삭제하는 것이지만 -f 플래그는 현재 분기에 병합된 분기를 삭제합니다.

 git sweep
 Deleted branch bar (was 9a56952). Deleted branch masterful (was 9a56952). Deleted branch notmaster (was 9a56952).
 git sweep -f
 Deleted branch foo (was 2cea1ab).

eddies

Git Sweep 은 이 작업을 훌륭하게 수행합니다.


paul

Git 버전 2.5.0 사용:

 git branch -d `git branch --merged`

drautb

--merged 옵션에 커밋을 추가할 수 있습니다. 이렇게 하면 원본/마스터와 같이 병합된 분기만 제거할 수 있습니다.

다음 명령은 원본에서 병합된 분기를 제거합니다.

 git branch -r --merged origin/master | grep -v "^.*master" | sed s:origin/:: |xargs -n 1 git push origin --delete

git push origin --delete를 echo로 대체하여 제거할 분기를 테스트할 수 있습니다.

 git branch -r --merged origin/master | grep -v "^.*master" | sed s:origin/:: |xargs -n 1 echo

Jörn Reimerdes

Windows를 사용하는 경우 Out-GridView 와 함께 Windows Powershell 또는 Powershell 7을 사용하여 멋진 분기 목록을 만들고 삭제할 분기를 마우스로 선택할 수 있습니다.

 git branch --format "%(refname:short)" --merged | Out-GridView -PassThru | % { git branch -d $_ }

여기에 이미지 설명 입력 확인을 클릭하면 Powershell이 이 분기 이름을 git branch -d 명령에 전달하고 삭제합니다. 여기에 이미지 설명 입력


Mariusz Pawelski

다음 Ruby 스크립트를 사용하여 이미 병합된 로컬 및 원격 분기를 삭제합니다. 여러 리모컨이 있는 리포지토리에 대해 이 작업을 수행하고 하나에서만 삭제하려는 경우 원격 목록에 select 문을 추가하여 원하는 리모컨만 가져옵니다.

 #!/usr/bin/env ruby current_branch = `git symbolic-ref --short HEAD`.chomp if current_branch != "master" if $?.exitstatus == 0 puts "WARNING: You are on branch #{current_branch}, NOT master." else puts "WARNING: You are not on a branch" end puts end puts "Fetching merged branches..." remote_branches= `git branch -r --merged`. split("\n"). map(&:strip). reject {|b| b =~ /\/(#{current_branch}|master)/} local_branches= `git branch --merged`. gsub(/^\* /, ''). split("\n"). map(&:strip). reject {|b| b =~ /(#{current_branch}|master)/} if remote_branches.empty? && local_branches.empty? puts "No existing branches have been merged into #{current_branch}." else puts "This will remove the following branches:" puts remote_branches.join("\n") puts local_branches.join("\n") puts "Proceed?" if gets =~ /^y/i remote_branches.each do |b| remote, branch = b.split(/\//) `git push #{remote} :#{branch}` end # Remove local branches `git branch -d #{local_branches.join(' ')}` else puts "No branches removed." end end

mmrobins

PowerShell 콘솔에서 병합된 분기를 삭제하는 방법

 git branch --merged | %{git branch -d $_.Trim()}

마스터 또는 다른 분기 이름을 제외하려면 다음과 같이 PowerShell Select-String을 사용하여 파이프하고 결과를 git branch -d 전달할 수 있습니다.

 git branch -d $(git branch --merged | Select-String -NotMatch "master" | %{$_.ToString().Trim()})

Konstantin Tarkus

kuboon의 대답은 분기 이름에 master라는 단어가 있는 분기를 삭제하지 못했습니다. 다음은 그의 답변을 개선합니다.

 git branch -r --merged | grep -v "origin/master$" | sed 's/\s*origin\///' | xargs -n 1 git push --delete origin

물론 "마스터" 브랜치 자체는 삭제하지 않습니다. :)


Paras

참고 : 이전 답변에 만족하지 않습니다(모든 시스템에서 작동하지 않음, 원격에서 작동하지 않음, --merged 분기를 지정하지 않음, 정확히 필터링하지 않음). 그래서 나는 내 자신의 대답을 추가합니다.

두 가지 주요 경우가 있습니다.

현지의

이미 다른 로컬 브랜치에 병합된 로컬 브랜치 를 삭제하려고 합니다. 삭제하는 동안 마스터, 개발 등과 같은 일부 중요한 분기를 유지하려고 합니다.

 git branch --format "%(refname:short)" --merged master | grep -E -v '^master$|^feature/develop$' | xargs -n 1 git branch -d

참고 :

  • git branch output --format ".."은 공백을 제거하고 정확한 grep 일치를 허용하는 것입니다.
  • grep -Eegrep 대신 사용되므로 egrep이 없는 시스템에서도 작동합니다(예: Windows의 경우 git).
  • grep -E -v '^master$|^feature/develop$' 는 삭제하고 싶지 않은 로컬 분기를 지정하는 것입니다.
  • xargs -n 1 git branch -d : 로컬 브랜치 삭제 수행(원격 브랜치에서는 작동하지 않음)
  • 물론 현재 체크 아웃된 브랜치를 삭제하려고 하면 오류가 발생합니다. 따라서 미리 마스터로 전환하는 것이 좋습니다.

원격

이미 다른 원격 분기에 병합된 원격 분기 를 삭제하려고 합니다. 삭제하는 동안 HEAD, 마스터, 릴리스 등과 같은 일부 중요한 분기를 유지하려고 합니다.

 git branch -r --format "%(refname:short)" --merged origin/master | grep -E -v '^*HEAD$|^*/master$|^*release' | cut -d/ -f2- | xargs -n 1 git push --delete origin

참고 :

  • 원격의 경우 -r 옵션을 사용하고 전체 브랜치 이름을 제공합니다: origin/master
  • grep -E -v '^*HEAD$|^*/master$|^*release' 는 삭제하지 않으려는 원격 분기와 일치하는 것입니다.
  • cut -d/ -f2- : 불필요한 'origin/' 접두사를 제거합니다. 그렇지 않으면 git branch 명령으로 출력됩니다.
  • xargs -n 1 git push --delete origin : 원격 브랜치를 삭제합니다.

psuzzi

Git에는 이 작업을 자동으로 수행하는 명령이 없습니다. 그러나 Git 명령을 사용하여 필요한 것을 제공하는 스크립트를 작성할 수 있습니다. 이것은 사용 중인 분기 모델에 따라 여러 가지 방법으로 수행할 수 있습니다.

분기가 마스터에 병합되었는지 알아야 하는 경우 myTopicBranch가 병합된 경우 다음 명령은 출력을 생성하지 않습니다(즉, 삭제할 수 있음)

 $ git rev-list master | grep $(git rev-parse myTopicBranch)

Git 분기 명령을 사용하고 Bash의 모든 분기를 구문 분석하고 모든 분기에 대해 for 루프를 수행할 수 있습니다. 이 루프에서 위의 명령으로 분기를 삭제할 수 있는지 여부를 확인합니다.


ralphtheninja

git plugin 과 함께 OhMyZSH 를 사용하는 경우 gbda 별칭을 사용할 수 있습니다.


Dan K.K.

git branch --merged | grep -Ev '^(. master|\*)' | xargs -n 1 git branch -d 는 현재 체크아웃된 분기 및/또는 master 제외한 모든 로컬 분기를 삭제합니다.

다음은 이러한 명령을 이해하려는 사람들을 위한 유용한 문서입니다. Git Clean: 이미 병합된 분기 삭제, Steven Harman .


styger

git-del-br 도구를 사용할 수 있습니다.

 git-del-br -a

다음을 사용하여 pip 를 통해 설치할 수 있습니다.

 pip install git-del-br

추신: 저는 이 도구의 저자입니다. 모든 제안/피드백을 환영합니다.


tusharmakkar08

현재 있는 분기에 이미 병합된 모든 로컬 분기를 삭제하려면 이전 답변을 기반으로 안전한 명령을 제시했습니다.

 git branch --merged | grep -v \* | grep -v '^\s*master$' | xargs -t -n 1 git branch -d

이 명령은 현재 분기 또는 마스터 분기에 영향을 주지 않습니다. 또한 xargs의 -t 플래그를 사용하여 수행하기 전에 수행 중인 작업을 알려줍니다.


chrismendis

Adam의 업데이트 된 답변의 별칭 버전 :

 [alias] branch-cleanup = "!git branch --merged | egrep -v \"(^\\*|master|dev)\" | xargs git branch -d #"

또한 복잡한 별칭을 이스케이프하는 데 유용한 팁 은 이 답변을 참조하세요.


Eliot

나는 git-flow esque 명명 체계를 사용하므로 이것은 매우 안전하게 작동합니다.

 git branch --merged | grep -e "^\s\+\(fix\|feature\)/" | xargs git branch -d

fix/ 또는 feature/ 시작하는 병합된 커밋을 찾습니다.


Chad M

git bash가 설치된 Windows에서 egrep -v가 작동하지 않습니다.

 git branch --merged | grep -E -v "(master|test|dev)" | xargs git branch -d

여기서 grep -E -v egrep -v 와 동일합니다.

-d 를 사용하여 이미 병합된 분기 -D 를 사용하여 병합되지 않은 분기를 제거합니다.


DevWL

아래 쿼리는 나를 위해 작동합니다.

 for branch in `git branch -r --merged | grep -v '\*\|master\|develop'|awk 'NR > 0 {print$1}'|awk '{gsub(/origin\//, "")}1'`;do git push origin --delete $branch; done

이것은 grep 파이프의 주어진 분기를 필터링합니다.

http 복제에서는 잘 작동하지만 ssh 연결에서는 잘 작동하지 않습니다.


user1460965

허용된 솔루션은 꽤 좋지만 아직 원격으로 병합되지 않은 로컬 분기도 삭제한다는 한 가지 문제가 있습니다.

의 출력을 보면 다음과 같은 것을 볼 수 있습니다.

 $ git branch --merged master -v api_doc 3a05427 [gone] Start of describing the Java API bla 52e080a Update wording. branch-1.0 32f1a72 [maven-release-plugin] prepare release 1.0.1 initial_proposal 6e59fb0 [gone] Original proposal, converted to AsciiDoc. issue_248 be2ba3c Skip unit-for-type checking. This needs more work. (#254) master be2ba3c Skip unit-for-type checking. This needs more work. (#254)

blaissue_248 분기는 자동으로 삭제되는 로컬 분기입니다.

[gone] 이라는 단어도 볼 수 있는데, 이는 원격으로 푸시된(지금은 없어진) 분기를 나타내므로 분기를 삭제할 수 있음을 나타냅니다.

따라서 원래 답변은 (짧은 줄 길이를 위해 여러 줄로 분할)로 변경할 수 있습니다.

 git branch --merged master -v | \ grep "\\[gone\\]" | \ sed -e 's/^..//' -e 's/\S* .*//' | \ xargs git branch -d

아직 병합되지 않은 분기를 보호합니다. 또한 마스터가 그것을 보호하기 위해 grepping하는 것은 필요하지 않습니다. 이것은 원점에 리모콘이 있고 사라진 것으로 표시되지 않기 때문입니다.


Heiko Rupp

이 답변 중 일부를 기반으로 자체 Bash 스크립트도 만들었습니다!

git branch --mergedgit branch -d 를 사용하여 병합된 분기를 삭제하고 삭제하기 전에 각 분기에 대해 묻는 메시지를 표시합니다.

 merged_branches(){ local current_branch=$(git rev-parse --abbrev-ref HEAD) for branch in $(git branch --merged | cut -c3-) do echo "Branch $branch is already merged into $current_branch." echo "Would you like to delete it? [Y]es/[N]o " read REPLY if [[ $REPLY =~ ^[Yy] ]]; then git branch -d $branch fi done }

earlonrails

2018.07 기준

~/.gitconfig [alias] 섹션에 추가하십시오.

 sweep = !"f() { git branch --merged | egrep -v \"(^\\*|master|dev)\" || true | xargs git branch -d; }; f"

git sweep 을 호출하여 필요한 정리를 수행할 수 있습니다.


sorin

하나의 cmd에서 병합 된 로컬 및 원격 분기 를 제거하기 위해 다음 방법을 사용했습니다.

bashrc 파일에 다음이 있습니다.

 function rmb { current_branch=$(git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/') if [ "$current_branch" != "master" ]; then echo "WARNING: You are on branch $current_branch, NOT master." fi echo "Fetching merged branches..." git remote prune origin remote_branches=$(git branch -r --merged | grep -v '/master$' | grep -v "/$current_branch$") local_branches=$(git branch --merged | grep -v 'master$' | grep -v "$current_branch$") if [ -z "$remote_branches" ] && [ -z "$local_branches" ]; then echo "No existing branches have been merged into $current_branch." else echo "This will remove the following branches:" if [ -n "$remote_branches" ]; then echo "$remote_branches" fi if [ -n "$local_branches" ]; then echo "$local_branches" fi read -p "Continue? (y/n): " -n 1 choice echo if [ "$choice" == "y" ] || [ "$choice" == "Y" ]; then # Remove remote branches git push origin `git branch -r --merged | grep -v '/master$' | grep -v "/$current_branch$" | sed 's/origin\//:/g' | tr -d '\n'` # Remove local branches git branch -d `git branch --merged | grep -v 'master$' | grep -v "$current_branch$" | sed 's/origin\///g' | tr -d '\n'` else echo "No branches removed." fi fi }

원본 소스

이것은 마스터 브랜치를 삭제하지 않지만 병합된 로컬 및 원격 브랜치를 제거합니다 . rc 파일에 이것이 있으면 rmb 실행하면 정리되고 작업에 대한 확인을 요청하는 병합된 분기 목록이 표시됩니다. 확인을 요청하지 않도록 코드를 수정할 수도 있지만 그대로 두는 것이 좋습니다.


Prashant

다음 명령을 시도하십시오.

 git branch -d $(git branch --merged | grep -vw $(git rev-parse --abbrev-ref HEAD))

git rev-parse 를 사용 하여 현재 분기 이름 을 가져와 이를 제외합니다. 오류가 발생하면 제거할 로컬 분기가 없음을 의미합니다.

원격 브랜치에서 동일한 작업을 수행하려면( origin 변경) 다음을 시도하세요.

 git push origin -vd $(git branch -r --merged | grep -vw $(git rev-parse --abbrev-ref HEAD) | cut -d/ -f2)

리모컨이 여러 개인 경우 grep origin | origin 만 필터링하기 cut 전에 .

위의 명령이 실패하면 병합된 원격 추적 분기를 먼저 삭제하십시오.

 git branch -rd $(git branch -r --merged | grep -vw $(git rev-parse --abbrev-ref HEAD))

그런 다음 git이 리모컨을 다시 git fetch git push -vd 명령을 다시 사용합니다.

~/.gitconfig 파일에 별칭으로 추가하는 것이 좋습니다.

실수로 일부 분기를 제거한 경우 git reflog 를 사용하여 손실된 커밋을 찾으십시오.


kenorb

나는 이것을 사용한다:

 git branch --delete $(git branch --format '%(refname:short)' --merged | grep --invert-match 'main\|master\|branch-to-skip')

지정된 형식으로 병합된 모든 분기를 나열한 다음 해당 목록을 git branch --delete에 제공합니다.


Elmer

출처 : http:www.stackoverflow.com/questions/6127328/how-can-i-delete-all-git-branches-which-have-been-merged

반응형