gpt4 book ai didi

git fetch prune 不工作

转载 作者:太空狗 更新时间:2023-10-29 13:04:45 30 4
gpt4 key购买 nike

我有一堆被删除的远程分支,现在我想删除本地的分支。我试过:

git fetch -p

但它不起作用。

如果我这样做:

git branch -r

git 分支

列表不一样,因为 git branch 仍然列出已删除的远程分支,即使在我运行 git fetch -p 之后也是如此。我已经将此视为在此处的很多问题中执行此操作的公认答案,但它对我不起作用。

我不确定我对问题的措辞是否正确,所以这里有另一种解释。假设我有:

GitHub: (remote)
    Branch A
    Branch B
    Branch C

Local:
    Branch A ==> (remote) Branch A
    Branch B ==> (remote) Branch B
    Branch C ==> (remote) Branch C

现在有人在 GitHub 上删除了一个分支,给出:

GitHub: (remote)
    Branch A
    Branch C

我希望我的本地存储库看起来像:

Local:
    Branch A ==> (remote) Branch A
    Branch C ==> (remote) Branch C

最佳答案

展开hobbs' comment , git fetch -p(或 git remote prune 或任何类似命令)仅从您的存储库中删除不再存在于远程的每个“远程分支”。

如果您创建了一个本地 分支,除非您手动将其删除,否则该标签不会消失。

例如,假设在远程 origin 上,有一个名为 sparkly 的分支:

$ git fetch
...
* [new branch] sparkly -> origin/sparkly

此时您没有名为 sparkly 的分支(除非您已经有一个!);你只有origin/sparkly(它位于一个单独的命名空间,refs/remotes/ 而不是refs/heads/)。

如果您之前创建了自己的名为 sparkly 的分支,它可能不会跟踪这个新的 origin/sparkly。但是,如果您创建自己的名为 sparkly now 的分支,它将跟踪 origin/sparkly

不过,在这两种情况下,都不会自动删除它。您必须手动执行此操作。

原因之一:不能保证仅仅因为 origin/sparkly 已经消失,就完成了它(“它”是您创建的本地分支,它可能会或可能不会跟踪此远程分支)。如果 git 删除了您的标签以及 origin/ 版本,那么您一直在处理的任何提交都可能变得很难找到。

因此,简短的回答是:您必须手动执行此操作(或半手动,您可以根据需要自动执行)。使用:

git branch -d sparkly

只有在“安全”的情况下才删除它(在 git 看来 :-) ),或者:

git branch -D sparkly

删除它,即使 git 认为这是“不安全的”。

关于git fetch prune 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21317574/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com