git fetch prune无效

 周郎某某某 发布于 2023-01-31 18:03

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

git fetch -p

但它不起作用.

如果我做:

git branch -r

git branch

列表不一样,因为git branch即使在我运行之后仍然列出已删除的远程分支git fetch -p.我已经看到这是在这里的很多问题中做到这一点的公认答案,但它对我不起作用.

我不确定我是否正确地说明了这个问题,所以这是另一种解释.说我有:

GitHub :(远程)
    分支A
    分支B
    分支C.

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

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

GitHub :(远程)
    分支A
    分支C.

我希望我的本地仓库看起来像是:

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

torek.. 14

要扩展hobbs的注释,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认为这是"不安全"也要删除它.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有