Answers:
您需要执行以下操作
git fetch -p
这将更新远程分支的本地数据库。
origin
fork中不存在的远程分支起作用: git fetch -p origin
当我这样做时 git branch -r
,不存在的远程分支不再出现。
git remote prune origin
,以及类似的git pull --prune
在提到stackoverflow.com/a/6127884/94687和stackoverflow.com/a/17983126/94687分别。
[deleted] (none) -> origin/ < branch name >
分支仍显示在本地仓库中,为什么?
git branch
仍然显示应该删除的分支。
来自http://www.gitguys.com/topics/adding-and-removing-remote-branches/
有人从远程存储库删除分支后,当用户执行git pull或git fetch时,git不会自动删除本地存储库分支。但是,如果用户希望从本地存储库中删除所有已在远程存储库中删除的跟踪分支,则可以输入:
git remote prune起源
注意,来自的-p参数git fetch -p
实际上表示“修剪”。
不管选择哪种方式,都不存在的远程分支都将从本地存储库中删除。
关于 git fetch -p
,其行为在Git 1.9中发生了变化,只有Git 2.9.x / 2.10反映了这一点。
参见Jeff King()的commit 9e70233(2016年6月13日)。(由Junio C Hamano合并--在commit 1c22105中,2016年7月6日)peff
gitster
fetch
:记录修剪的发生 在获取之前进行这在10a6cc8中已更改(
fetch --prune
:在获取之前运行prune,2014-01-02),但是在该讨论中似乎没有人意识到我们明确地宣传了“之后”广告。
因此,文档现在指出:
提取之前,请删除遥控器上不再存在的所有远程跟踪参考
那是因为:
当我们
frotz/nitfol
从先前的提取中获得一个名为“ ” 的远程跟踪分支,而上游现在有了一个名为“frotz
” 的分支时,提取将无法从上游中删除frotz/nitfol
带有“git fetch --prune
” 的“ ”。git会通知用户使用“git remote prune
”来解决问题。
fetch --prune
通过在获取操作之前移动修剪操作来更改“ ”的工作方式。这样,它会自动修复它,而不是警告用户冲突。