从被删除的远程分支从原始获取?
当我做git fetch origin
和起源有一个删除分支,它似乎并没有更新它在我的存储库。 当我做git branch -r
它仍然显示origin/DELETED_BRANCH
。
我怎样才能解决这个问题?
您需要执行以下操作
git fetch -p
这将更新远程分支的本地数据库。
从http://www.gitguys.com/topics/adding-and-removing-remote-branches/
在某人从远程仓库中删除一个分支之后,当用户进行git pull或git fetch时,git不会自动删除本地仓库分支。 但是,如果用户希望从远程存储库中的本地存储库中删除所有跟踪分支,则可以键入:
git远程修剪起源
注意, git fetch -p
的-p参数实际上是“prune”。
无论select哪种方式,不存在的远程分支都将从本地存储库中删除。
您需要执行以下操作
git fetch -p
为了同步你的分支列表。 git手册说
-p
,–--prune
获取后,删除远程不再存在的任何远程跟踪引用。 如果标签仅由于默认标签自动跟随或由于--tags
选项而被提取,则不会进行修剪。 但是,如果由于明确的refspec(在命令行或远程configuration中,例如,如果远程是使用--mirror
选项克隆的)而获取--mirror
,则它们也将被剪枝。
我个人喜欢使用git fetch origin -p --progress
因为它显示了一个进度指示器。
这对我有效。
git remote update --prune
关于git fetch -p
,它的行为在Git 1.9中改变了,只有Git 2.9.x / 2.10反映了这一点。
见Jeff King( peff
)的 提交9e70233 (2016年6月13日) 。
(由Junio C gitster
合并- gitster
-在承诺1c22105 ,2016年7月6日)
fetch
: 在获取之前发生修剪的文件这在10a6cc8 (
fetch --prune
:在提取之前运行修剪,2014-01-02)发生了变化,但似乎没有人在这个讨论中意识到我们正在明确地宣传“after”。
所以文档现在说:
在提取之前 ,删除远程不再存在的任何远程跟踪引用
那是因为:
当我们有一个名为“
frotz/nitfol
”的远程跟踪分支来自上一次获取,而上游现在有一个名为“frotz
”的分支时,获取将无法使用“git fetch --prune
”删除“frotz/nitfol
git fetch --prune
”从上游。 git会通知用户使用“git remote prune
”来解决这个问题。在
fetch --prune
操作之前,通过移动修剪操作来改变“fetch --prune
”的工作方式。 这样,而不是警告冲突的用户,它会自动修复它。
这里是你如何更新回购信息
git remote update