Git分支甚至在删除后显示在远程分支列表中

时间:2013-08-22 15:52:51

标签: git branch

我已删除并推送了一个分支,但它仍在branch -r中显示给其他用户:

serverAlpha $ git push origin --delete origin/issue186
serverAlpha $ git push

serverBeta $ git pull
serverBeta $ git branch -r
  origin/HEAD -> origin/master
  origin/issue186
  origin/master

我知道git remote prune origin但是每个其他用户都必须运行它。我如何删除分支,以便其他用户看到它已被删除?我不能指望,甚至不能与所有其他人沟通修剪,我不希望任何其他人在那个分支的基础上工作。

3 个答案:

答案 0 :(得分:3)

TL; DR

你做不到。有些操作只是Git中的本地操作。

git-branch vs. git-ls-remote

git branch命令对本地引用进行操作。 -r标志只是将输出限制为远程跟踪分支,但它不直接与远程通信。另一方面,git ls-remote实际上将显示远程的refs,而不是本地存储库。

删除其他人的参考

你不能用Git做到这一点。分布式VCS的整体思想是状态可以以非集中的方式存在。在您的情况下,这意味着某人桌面上的引用可能与定义的遥控器上某些裸存储库中的引用不匹配。

您是否希望其他人能够删除桌面上的工作分支?可能不是。由于Git不允许这样做,所以你不需要在它上面失眠。

您可以做的最好的事情是从服务器中删除分支。如果,如你所说,你“无法与已经克隆工作的其他人沟通”,那么除了恢复或重新定义基于该分支的任何工作,如果/当该工作致力于此时,您无能为力一些主线分支。

答案 1 :(得分:2)

您无法移除其他人的分支机构。他们是他们的,甚至是远程跟踪的。

他们的远程跟踪分支将在下次从您删除分支的远程处获取时删除,前提是他们使用-p(--prune)标志(我通常这样做)。

答案 2 :(得分:1)

如果你已经控制了原产地而其他人已经退出原点,那你就不幸了。

但是,对于您的用例,我只需对origin / master分支进行新的提交,删除所有现有文件,并添加一个README,将用户指向应该使用的正确策略/分支。

通过这种方式,以前使用该分支的协作者不存在获取问题,并且很清楚之前可能使用过origin / master的协作者应该如何进行。