你如何删除从Git的一个无效的远程分支参考?你如何删除从Git的一个无效的远程分支参考?(How d

2019-05-14 11:01发布

在我目前的回购协议,我有以下的输出:

$ git branch -a
* master
  remotes/origin/master
  remotes/public/master

我想删除remotes/public/master从分支列表:

$ git branch -d remotes/public/master
error: branch 'remotes/public/master' not found.

此外,输出git remote是奇怪的,因为它没有列出public

$ git remote show 
origin

我怎样才能从分支列表中删除“的远程数据库/公共/主”?

更新,尝试了git push命令:

$ git push public :master
fatal: 'public' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Answer 1:

你可能会需要一个清理

git gc --prune=now

或者你可能需要剪枝

git remote prune public

修剪

删除所有陈旧跟踪分支机构下<名>。 这些陈旧的分支机构已经从<名>引用的远程库中删除,但仍然本地可用的“遥控器/ <名>”。

随着--dry-run选项,报什么树枝的修剪,但实际上没有修剪它们。

但是,看来这些应该已经与前面清理

git remote rm public 

R M

删除远程命名为<名称>。 远程所有远程跟踪分支和配置设置将被删除。

因此,它可能是你手动编辑您的配置文件,这并没有发生,或者你有特权的问题。

也许再次运行,看看会发生什么。

建议上下文

如果你把在看看修改日志 ,你会注意到我建议更“正确”技术,这无论出于何种原因不想在他们的仓库工作。

我怀疑OP做了的东西,留下了他们的树,导致它奇怪的行为有点不一致的状态,并git gc被要求解决了遗留的残余。

通常 git branch -rd origin/badbranch是足够的摧毁当地的跟踪分支,或git push origin :badbranch为的摧毁远程分支, 通常你将永远不会需要调用git gc



Answer 2:

所有你需要做的是

git fetch -p

它会删除所有的地方分支机构被远程删除。

如果你是混帐1.8.5+可以自动设置此

git config fetch.prune true

要么

git config --global fetch.prune true


Answer 3:

git push public :master

这将删除远程分支命名master肯特弗雷德里克指出。

要列出远程跟踪分支:

git branch -r

要删除远程跟踪分支:

git branch -rd public/master


Answer 4:

所有你需要做的是

$ git branch -rd origin/whatever 

就这么简单。 没有理由在这里所说的GC。



Answer 5:

git gc --prune=now是不是你想要的。

git remote prune public

git remote prune origin如果那是该远程源#

是你想要的



Answer 6:

当裁判挤满接受的答案并没有为我工作。 然而,这不:

$ git remote add public http://anything.com/bogus.git
$ git remote rm public


Answer 7:

在我来说,我是想删除已保存在项目.git/packed-refs 。 您可以编辑该纯文本文件,并删除其条目git br -D不知道如何触摸(至少在版本1.7.9.5)。

我发现这个解决方案在这里: https://stackoverflow.com/a/11050880/1695680



Answer 8:

git push origin --delete <branch name>

:从引用http://www.gitguys.com/topics/adding-and-removing-remote-branches/



Answer 9:

我有一个类似的问题。 答案没有帮助。 在我来说,我有两个删除远程仓库永久显示出来。

我最后的想法是用手工删除所有引用。

比方说库被称为“回购”。 我所做的:

find .git -name Repo

并删除了相应的文件和目录

grep Repo -r .git

这个发现在我删除了相应的线路一些文本文件。 现在,一切都似乎是罚款。

通常你应该离开这个工作的git。



Answer 10:

我不知道git branch -rd ,所以我已经解决了问题,这样对自己的办法就是把我的回购作为远程回购和进行远程删除。 git push . :refs/remotes/public/master git push . :refs/remotes/public/master 。 如果其他方法不工作,你必须要摆脱一些奇怪的参考,这种原始的方法是万无一失的。 它给你确切的精度来删除(或创造!)任何形式的参考。



Answer 11:

仅略有关,但仍因为我们有可能会在相同的情况下有益的 - 我们使用网络文件共享我们的远程仓库。 上周事情的工作,这周我们得到了错误“远程起源没有做广告参考分支裁判/头/主,这Ref可以不在远程存在,或者可以通过权限设置隐藏”

但是,我们认为没有采取任何措施来腐朽的东西。 在NFS做快照,所以我每次审查“以前的版本”,只见那三天前,在仓库中的MB大小已经从282MB到了33MB,并且约1403新文件和300个文件夹现在存在。 我问我的同事,一个曾试图那天做一个推 - 然后将其取消。

我使用的NFS“恢复”功能来恢复它只是在该日期之前,现在万物工作的罚款一次。 我曾尝试修剪之前,没有似乎帮助。 也许更严厉的清理会工作。

希望这可以帮助别人12:29人一天!

松鸦



文章来源: How do you remove an invalid remote branch reference from Git?