Git:更新远程分支机构信息


125

在git存储库中,我未跟踪的远程分支已删除。当我打字

git branch -r

删除的分支仍然显示(我可以签出)

我必须运行什么git命令来更新此信息?

Answers:


39

如果您执行类似

git branch -d -r remote_name/branch_name

您只删除本地结帐。该命令对远程存储库不执行任何操作,因此它仍然显示。

解:

git push origin :branch_name

将删除远程分支(注意“:”),并且

git branch -d branch_name

将删除您的本地结帐。

参考


146
您也可以运行“ git remote prune origin”来清理您的远程引用。
cmcginty 2010年

3
这将删除不再由远程存储库跟踪的所有分支。因此,请小心。
加勒特·海德

4
我想知道,虽然有些冗长,但您也可以使用git push <remote> --delete <branchname>它删除远程分支,这也很有用。
AeroCross 2012年

这通常是可行的,但是今天我遇到了一种情况,即远程列表没有更新,因此我试图删除一个不存在的分支。因此,首先需要下面的 @Flo解决方案。
dgo

284

如果是远程存储库中的分支被删除,并且您想一次更新所有本地远程跟踪分支,则可以使用

$ git remote prune <remotename>

删除给定远程服务器的所有过时的远程跟踪分支(即,跟随在远程资源库中删除的分支的分支)。

请参阅git remote文档。


谢谢@Casey和@Jakub的回答!下次使用时,git fetch如何更新本地存储的远程分支机构信息呢?
JJD 2011年

4
@JJD:因为您的工作可能基于不再在这里的远程分支。因此,不要求它就消失是个坏主意。因此,您需要明确修剪远程跟踪分支。
JakubNarębski2011年

“ git gc”也会清理陈旧的远程分支吗?
詹姆斯·沃尔德

@JamesWald:不,不是。 git gc仅打包对象和引用,并删除未引用的对象(具有一定的安全裕度)。
JakubNarębski2012年

186
git remote update --prune

应该刷新所有遥控器的分支,添加新的分支并删除已删除的分支。

编辑:远程更新命令基本上获取远程上的分支列表。该--prune选项将摆脱您的本地远程跟踪分支,该分支指向远程上不再存在的分支。


这对我有用。我需要删除一个远程分支,由于某种原因,该分支无法被通常的'git push origin:<branch_name>'
删除

可以准确地说这个答案能做JakubNarębski的答案,还有更多吗?也就是说,它会修剪获取更新吗?
Frank Tan

14

对于查看新的远程分支也很有用:

git fetch --all

这对我很有帮助。Visual Studio git中的一些错误阻止显示克隆后创建的新分支。该命令有助于显示新的分支机构
Venkatesh Muniyandi,2016年

好n简单的thx花花公子,在房子上有一个青铜答案徽章:)
danday74

2

您可以结合-r-d标志来删除远程分支。


大提示!但是,在这种情况下,已经删除了几个分支,肯定有一条命令可以提取这些更新
Bain Markev 2010年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.