Git 从已删除远程分支的源获取?
当我执行Git 从已删除远程分支的源获取?,git,git-fetch,Git,Git Fetch,当我执行git fetch origin时,origin有一个已删除的分支,它似乎不会在我的存储库中更新它。当我执行git branch-r时,它仍然显示origin/DELETED\u branch 如何修复此问题?您需要执行以下操作 git fetch -p git fetch -p -p或-prune参数将更新远程分支的本地数据库。来自 有人从远程存储库中删除分支后,git将不会 当用户执行以下操作时自动删除本地存储库分支 git pull或git fetch。但是,如果用户希望拥有所
git fetch origin
时,origin有一个已删除的分支,它似乎不会在我的存储库中更新它。当我执行git branch-r
时,它仍然显示origin/DELETED\u branch
如何修复此问题?您需要执行以下操作
git fetch -p
git fetch -p
-p
或-prune
参数将更新远程分支的本地数据库。来自
有人从远程存储库中删除分支后,git将不会
当用户执行以下操作时自动删除本地存储库分支
git pull或git fetch。但是,如果用户希望拥有所有
跟踪从其本地存储库中删除的已删除的分支
在远程存储库中删除,他们可以键入:
git远程修剪源
注意,git fetch-p
中的-p参数实际上意味着“修剪”。
无论您选择哪种方式,都将从本地存储库中删除不存在的远程分支。这对我很有效
git remote update --prune
您需要执行以下操作
git fetch -p
git fetch -p
以同步您的分支列表。警察说
-p
,-prune
获取后,删除远程计算机上不再存在的任何远程跟踪引用。如果仅由于默认的标记自动跟随或由于
--Tags
选项而获取标记,则不会对标记进行修剪。但是,如果由于显式refspec(在命令行或远程配置中,例如,如果使用--mirror
选项克隆了远程设备)而获取标记,则它们也会被删除
我个人喜欢使用
git fetch origin-p--progress
,因为它显示了一个进度指示器。关于git fetch-p
,它的行为在git 1.9中发生了变化,只有git 2.9.x/2.10反映了这一点
参见(2016年6月13日)作者。(于2016年7月6日被合并)
fetch
:记录在获取之前进行的修剪
这一点在(fetch--prune
:在fetch之前运行prune,2014-01-02)中有所改变,但在讨论中似乎没有人意识到我们在明确宣传“after”
因此,文件现在指出:
提取前,删除远程计算机上不再存在的任何远程跟踪引用
这是因为:
当我们有一个名为“frotz/nitfol
”的远程跟踪分支来自以前的提取,而上游现在有一个名为“frotz
”的分支时,提取将无法从上游删除“frotz/nitfol
”和“git fetch--prune
”。git会通知用户使用“git remote prune
”来解决问题
通过在获取操作之前移动剪枝操作,更改“fetch--prune
”的工作方式。通过这种方式,它不会警告用户冲突,而是自动修复冲突
如果
git fetch-p origin
由于某种原因(例如因为origin repo不再存在或您无法访问它)不起作用,另一种解决方案是从repo的根目录中删除本地存储在该分支上的信息:
rm .git/refs/remotes/origin/DELETED_BRANCH
或者,如果它存储在文件.git/packed refs
中,则删除相应的行,如下所示
7a9930974b02a3b31cb2ebd17df6667514962685 refs/remotes/origin/DELETED_BRANCH
非常感谢你。我以前手动删除过这些分支。由于某种原因,您的命令不起作用,但是这一个在我的
origin
fork中对一个不存在的远程分支执行了:git fetch-p origin
当我执行git branch-r
时,不存在的远程分支不再显示。为了完整性:它必须与git remote prune origin
相同,并且与前面提到的git pull--prune>类似当我这样做时,它会显示[deleted](none)->origin/
,分支机构仍然显示在本地回购上。知道为什么吗?我收到一条消息,说我的分支机构已被删除,但是运行git branch
仍然会显示应该被删除的分支。可能是重复的,我喜欢这个,因为它没有新的内容。谢谢你的回答。我认为这应该是“接受”的答案,因为您提供了一些有关命令的背景信息。