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
仍然会显示应该被删除的分支。可能是重复的,我喜欢这个,因为它没有新的内容。谢谢你的回答。我认为这应该是“接受”的答案,因为您提供了一些有关命令的背景信息。