我的情况是这样的......在同一个存储库上工作的人已经从他的本地和远程存储库中删除了一个分支......
大多数在 Stack Overflow 或其他网站上询问此类问题的人都会遇到分支问题仍然显示在远程跟踪分支列表中的问题git branch -a
在底部:
* master
develop
feature_blah
remotes/origin/master
remotes/origin/develop
remotes/origin/feature_blah
remotes/origin/random_branch_I_want_deleted
然而,在我的情况下,不应该在那里的分支是本地的:
* master
develop
feature_blah
random_branch_I_want_deleted
remotes/origin/master
remotes/origin/develop
remotes/origin/feature_blah
当我执行以下任何操作时,它不会在本地被删除:
$ git prune
我也尝试过:
$ git remote prune origin
$ git fetch --prune
更多有用的信息:当我检查时git remote show origin
这是它的样子:
* remote origin
Fetch URL: utilities:homeconnections_ui.git
Push URL: utilities:homeconnections_ui.git
HEAD branch: master
Remote branches:
master tracked
develop tracked
feature_blah tracked
other123 tracked
other444 tracked
other999 tracked
Local branches configured for 'git pull':
develop merges with remote develop
feature_blah merges with remote other999
master merges with remote master
random_branch_I_want_deleted merges with remote random_branch_I_want_deleted
Local refs configured for 'git push':
develop pushes to develop (local out of date)
master pushes to master (up to date)
feature_blah pushes to feature_blah(up to date)
请注意,它仅出现在标题为Local branches configured for 'git pull':
Why?
我不怪你为此感到沮丧。最好的观察方式是这样的。每个远程分支可能有三个版本:
- 远程存储库上的实际分支
(例如,远程仓库位于https://example.com/repo.git, refs/heads/master
)
- 您本地该分支的快照(存储在
refs/remotes/...
)
(例如,本地回购,refs/remotes/origin/master
)
- 以及可能正在跟踪远程分支的本地分支
(例如,本地回购,refs/heads/master
)
让我们从git prune
。这删除了objects不再被引用的内容,它不会删除引用。就您而言,您有当地分支机构。这意味着有一个名为random_branch_I_want_deleted
它指的是代表该分支历史的一些对象。所以,根据定义,git prune
不会删除random_branch_I_want_deleted
。真的吗,git prune
是一种删除 Git 中累积但未被任何内容引用的数据的方法。一般来说,它不会影响您对任何分支的看法。
git remote prune origin
and git fetch --prune
两者都在下面的引用上运行refs/remotes/...
(我将这些称为远程引用)。不影响当地分支机构。这git remote
如果您只想删除特定远程下的远程引用,则 version 很有用。否则,两者会做完全相同的事情。所以,简而言之,git remote prune
and git fetch --prune
对上面的2号进行操作。例如,如果您使用 git web GUI 删除了一个分支,并且不希望它再显示在本地分支列表中(git branch -r
),那么这就是您应该使用的命令。
要删除本地分支,您应该使用git branch -d
(or -D
如果它没有在任何地方合并)。 FWIW,如果远程分支消失,没有 git 命令可以自动删除本地跟踪分支。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)