Visual Studio继续显示我已拉出的任何分支,即使已删除该分支(并且我没有将其作为所选分支)。
git fetch --all --prune
”不会删除它们。 git config remote.origin.prune true
”(suggested here)不会删除它们。如何从系统中删除已删除的分支?
更新:我想要一种方法来确定哪些分支已经消失并删除它们。如果我们专门选择它们,那么迟早有人会错误地删除正在使用的分支。
答案 0 :(得分:4)
prune
是关于删除遥控器上不再存在的任何远程跟踪引用。
因此,如果分支仍然存在于远程端,则不会在本地删除。
如果分支是deleted locally (with Visual Studio),则在下次推送时仍会重新创建其远程跟踪实例。
您需要确保分支是also deleted on the remote side:
git push origin --delete abranch
答案 1 :(得分:4)
我有一个远程分支,即使在服务器上被删除后,它们也不会消失。有关设置“修剪远程分支”的提示对我有用。我找到了here。
转到“团队资源管理器”,然后单击“主页”按钮。然后设置>存储库 设置,然后将“在获取过程中修剪远程分支”下拉列表设置为 真正。不要忘记点击“更新”按钮来保存您的修改。
更改设置后,我对已删除的分支之一进行了访存,所有已删除的分支都消失了。
答案 2 :(得分:3)
Visual Studio 2015& 2017
答案 3 :(得分:2)
答案 4 :(得分:0)
几乎所有将从远程删除分支“删除”的基本解决方案也很可能删除尚未被推送的本地分支,因为它们也没有远程引用。
为了避免这种警告,您可以编写一个shell脚本(在git fetch --prune
之后):
git branch -vv
获取带有远程引用的分支列表(可能在2.13.x中添加到git-branch的--format
标志将允许更容易解析的格式,但我还没有使用过此功能)grep -e '\['
应该可以做到这一点)如果您想要一个完全代码安全的简单解决方案,您可以使用此命令轻松安全地删除已(完全)合并到特定分支的分支:
git branch -D `git branch --merged origin/master | grep "^ " | xargs`
必要时替换适当的分支。 grep阻止它尝试删除当前检出的分支。
注意,这个将删除本地分支引用,即使远程删除没有删除,但提交是安全的,如果你再次需要这些分支,你可以随时检查它们。 / p>