使用git远程修剪原点,我可以删除不在远程上的本地分支。

但是我还想删除从这些远程分支创建的本地分支(检查它们是否未合并会很好)。

我该怎么做呢?


当前回答

它将列出远程跟踪分支从remote中删除的本地分支

$ git remote prune origin --dry-run

如果你想从未被跟踪的本地去引用这些本地分支

$ git remote prune origin

其他回答

更短更安全的一行代码:

git branch -d $(git branch --merged | cut -c 3- | grep -v master)

在运行分支之前,请确保签出到尚未合并的分支。因为您不能删除当前签入的分支。

删除所有没有更新到master的分支

git co master && git branch | sed s/\*/\ / | xargs git branch -d 2> /dev/null

似乎没有一个安全的一行代码,有太多的边缘情况(比如分支的名称中有“master”,等等)。最安全的是以下步骤:

Git分支-vv | grep 'gone]' > stale_branches.txt 查看文件并删除想要保留的分支(例如主分支!);您不需要编辑任何一行的内容 Awk '{print $1}' stale_branches.txt | xargs git branch -d

在OS X上,支持cut -w

git branch -d $(git branch -vv | grep ': gone]' | cut -w -f 2 )

解释

删除以下分支

git branch -d ...

显示移除的分支

$ git branch -vv | grep ': gone]'
  chore/TECH-456   a4bdac8ac8 [origin/TECH-456: gone] chore: syntax error
  feature/TECH-678 0342f8e277 [origin/feature/TECH-678: gone] Added IsGross in new Income Details

保留分支名称

$ git branch -vv | grep ': gone]' | cut -w -f 2
chore/TECH-456
feature/TECH-678

您可以使用该命令:

git branch --merged master | grep -v "\* master" | xargs -n 1 git branch -d

Git清洁:删除已经合并的分支,包括分解命令