从已删除的远程分支获取原点?

我是研究僧i 提交于 2020-02-28 08:40:29

当我执行git fetch origin并且origin有一个已删除的分支时,它似乎不会在我的存储库中更新它。 当我做git branch -r它仍然显示origin/DELETED_BRANCH

我怎样才能解决这个问题?


#1楼

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

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

git远程修剪原产地

注意, git fetch -p的-p param实际上意味着“修剪”。
无论您选择哪种方式,都将从本地存储库中删除不存在的远程分支。


#2楼

这对我有用。

git remote update --prune

#3楼

您需要执行以下操作

git fetch -p

以便同步您的分支列表。 git手册

-p , - --prune
获取后,删除远程不再存在的任何远程跟踪引用。 如果仅由于默认标记自动跟踪或由于--tags选项而提取标记,则不对其进行修剪。 但是,如果由于显式refspec(在命令行或远程配置中,例如,如果使用--mirror选项克隆远程)而--mirror ,则它们也会受到修剪。

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


#4楼

关于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),但似乎没有人在讨论中意识到我们明确地宣传了“之后”。

所以文档现在说明:

获取之前 ,删除远程不再存在的任何远程跟踪引用

那是因为:

当我们从之前的fetch中有一个名为“ frotz/nitfol ”的远程跟踪分支,并且上游现在有一个名为“ frotz ”的分支时,fetch将无法使用“ git fetch --prune ”删除“ frotz/nitfol git fetch --prune ”从上游。 git会通知用户使用“ git remote prune ”来解决问题。

通过在提取操作之前移动修剪操作来更改“ fetch --prune ”的工作方式。 这样,它不会警告用户冲突,而是自动修复它。


#5楼

您需要执行以下操作

git fetch -p

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!