我希望我的本地和远程存储库在分支方面始终保持同步。
在查看了GitHub上的拉取请求后,我合并并删除了那里的分支(远程)。我如何在本地存储库中获取此信息,并让Git删除我的本地版本的分支?
发布于 2013-08-01 15:30:02
快捷方法
git branch --merged | grep -v "\*" | xargs -n 1 git branch -d
注意:如果你不在master
上,这可能会删除分支。继续阅读“更好的方式”。
一定要留住师父
您可以确保master
或任何其他分支不会被更多的grep
删除。在这种情况下,您应该这样做:
git branch --merged | grep -v "\*" | grep -v "YOUR_BRANCH_TO_KEEP" | xargs -n 1 git branch -d
因此,如果我们想保留master
、develop
和staging
,我们应该这样做:
git branch --merged | grep -v "\*" | grep -Ev "(\*|master|develop|staging)" | xargs -n 1 git branch -d
将此设置为别名
因为它有点长,你可能想给你的.zshrc
或.bashrc
添加一个别名。我的是gbpurge
(用于git branches purge
):
alias gbpurge='git branch --merged | grep -Ev "(\*|master|develop|staging)" | xargs -n 1 git branch -d'
然后重新加载.bashrc
或.zshrc
. ~/.bashrc
或
. ~/.zshrc
发布于 2015-05-14 05:37:43
非常简单的解决方案:删除本地存储库并重新克隆远程存储库。可能看起来不是很优雅,但它很简单,您不需要阅读手册页就可以确切地理解您在做什么:-)。
发布于 2016-01-24 06:33:29
这些对我来说都不管用。你可以在这里看到我的另一个答案:https://stackoverflow.com/a/34969726/550454
但本质上,我现在的~/.gitconfig
中有这个
[alias]
prune-branches = !git remote prune origin && git branch -vv | grep ': gone]' | awk '{print $1}' | xargs -r git branch -d
https://stackoverflow.com/questions/17983068
复制相似问题