使用git远程修剪原点,我可以删除不在远程上的本地分支。
但是我还想删除从这些远程分支创建的本地分支(检查它们是否未合并会很好)。
我该怎么做呢?
使用git远程修剪原点,我可以删除不在远程上的本地分支。
但是我还想删除从这些远程分支创建的本地分支(检查它们是否未合并会很好)。
我该怎么做呢?
当前回答
更短更安全的一行代码:
git branch -d $(git branch --merged | cut -c 3- | grep -v master)
在运行分支之前,请确保签出到尚未合并的分支。因为您不能删除当前签入的分支。
其他回答
我已经把公认的答案变成了一个健壮的脚本。您可以在我的git-extensions存储库中找到它。
$ git-rprune --help
Remove old local branches that do not exist in REMOTE any more.
With --test, only print which local branches would be deleted.
Note: To do this automatically on each fetch / pull:
git config --global fetch.prune true
Usage: git-rprune REMOTE [-t|--test|-f|--force] [-?|-h|--help]
我很确定git remote prune origin是你想要的。
你可以运行它作为git远程剪枝起源-演练,看看它会做什么不做任何改变。
删除所有没有更新到master的分支
git co master && git branch | sed s/\*/\ / | xargs git branch -d 2> /dev/null
如果要删除所有已经合并到master中的本地分支,可以使用以下命令:
git branch --merged master | grep -v '^[ *]*master$' | xargs git branch -d
如果你使用main作为你的主分支,你应该相应地修改命令:
git branch --merged main | grep -v '^[ *]*main$' | xargs git branch -d
更多信息。
你可以通过一些简单的操作来做到这一点:
输出你所有的分支到一个临时文件:
git branch > branches.tmp
打开文件并删除分支以排除它们从本地删除(分支如develop/master/main/…) 通过cat命令将分支名称传递给xargs并删除分支:
cat branches.tmp | xargs git branch -D