从已删除的远程分支从源中获取?


Answers:


809

您需要执行以下操作

git fetch -p

这将更新远程分支的本地数据库。


1
非常感谢你。我以前手动删除了那些分支。
Maksim Dmitriev

4
由于某种原因,您的命令不起作用,但是此命令对我的originfork中不存在的远程分支起作用: git fetch -p origin 当我这样做时 git branch -r ,不存在的远程分支不再出现。
oldfartdeveloper 2013年

11
为了完整性:它必须是相同的git remote prune origin,以及类似的git pull --prune在提到stackoverflow.com/a/6127884/94687stackoverflow.com/a/17983126/94687分别。
imz-伊万·扎哈拉里舍夫(Ivan Zakharyaschev)

6
伙计们,当我这样做时,它说[deleted] (none) -> origin/ < branch name >分支仍显示在本地仓库中,为什么?
Buddhi741 '18

4
我收到一条消息,说我的分支已被删除,但是运行git branch仍然显示应该删除的分支。
sdfsdf

91

来自http://www.gitguys.com/topics/adding-and-removing-remote-branches/

有人从远程存储库删除分支后,当用户执行git pull或git fetch时,git不会自动删除本地存储库分支。但是,如果用户希望从本地存储库中删除所有已在远程存储库中删除的跟踪分支,则可以输入:

git remote prune起源

注意,来自的-p参数git fetch -p实际上表示“修剪”。
不管选择哪种方式,都不存在的远程分支都将从本地存储库中删除。


我喜欢它,因为它不会获取任何新东西。
Marek R

30

您需要执行以下操作

git fetch -p

为了同步您的分支机构列表。在git的手册

-p--prune
提取后,删除遥控器上不再存在的所有远程跟踪参考。如果仅由于默认标签自动跟随或由于--tags选项而获取标签,则不对它们进行修剪。但是,如果由于显式的refspec(在命令行或在远程配置中,例如,如果使用该--mirror选项克隆了远程服务器)而获取了标签,则也将对其进行修剪。

我个人喜欢使用,git fetch origin -p --progress因为它显示进度指示器。



6

关于 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通过在获取操作之前移动修剪操作来更改“ ”的工作方式。这样,它会自动修复它,而不是警告用户冲突。

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.