如何从Git中删除无效的远程分支引用?
在我目前的回购中,我有以下输出:
$ 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
你可能需要清理
git gc --prune=now
或者你可能需要修剪
git remote prune public
修剪
删除<name>下的所有陈旧的跟踪分支。 这些陈旧的分支已经从<name>引用的远程存储库中被移除,但是仍然在“remotes / <name>”中本地可用。
使用–dry-run选项,报告哪些分支将被修剪,但是实际上并不修剪它们。
但是,看起来这些应该早就被清理了
git remote rm public
R M
删除名为<名称>的远程。 远程的所有远程跟踪分支和configuration设置都被删除。
所以它可能是你手工编辑你的configuration文件,这没有发生,或者你有特权问题。
也许再次运行,看看会发生什么。
build议上下文
如果你看一下修订日志 ,你会注意到我提出了更多的“正确的”技术,无论出于什么原因,他们都不想在他们的存储库上工作。
我怀疑OP已经做了一些让他们的行为变得有点奇怪的不一致的状态,并且git gc
被要求修复留下的残留物。
通常, git branch -rd origin/badbranch
足够用于本地跟踪分支,或者git push origin :badbranch
用于git push origin :badbranch
远程分支, 通常你不需要调用git gc
所有你需要做的是
git fetch -p
它将删除所有您远程删除的本地分行。
如果你在git 1.8.5以上,你可以自动设置
git config fetch.prune true
要么
git config --global fetch.prune true
git push public :master
这将删除Kent Fredric指出的远程分支。
列出远程追踪分行:
git branch -r
要删除远程跟踪分支:
git branch -rd public/master
所有你需要做的是
$ git branch -rd origin/whatever
就这么简单。 没有理由在这里调用gc。
git gc --prune=now
不是你想要的。
git remote prune public
或者git remote prune origin
#如果那是远程源
是你想要的
当裁判被打包时,接受的答案对我来说不起作用。 但是,
$ git remote add public http://anything.com/bogus.git $ git remote rm public
在我的情况下,我试图删除保存在.git/packed-refs
条目。 你可以编辑这个纯文本文件,并删除它的git br -D
不知道如何触摸(至less在1.7.9.5版本)。
我在这里find了这个解决scheme: https : //stackoverflow.com/a/11050880/1695680
git push origin --delete <branch name>
参考: http : //www.gitguys.com/topics/adding-and-removing-remote-branches/
我有一个类似的问题。 没有任何答案有帮助。 在我的情况下,我有两个删除远程存储库永久显示。
我最后的想法是手动删除所有的引用。
可以说这个仓库被称为“回购”。 我做了:
find .git -name Repo
并删除相应的文件和目录
grep Repo -r .git
这发现了一些文本文件,我删除了相应的行。 现在,一切似乎都很好。
通常你应该离开这个工作混帐。
我不知道git branch -rd
,所以我为自己解决这个问题的方式是将我的回购视为远程回购,并执行远程删除。 git push . :refs/remotes/public/master
git push . :refs/remotes/public/master
。 如果其他方法不起作用,并且你想要摆脱一些奇怪的参考,这种原始的方式是绝对的。 它给你准确的删除(或创build!)任何types的参考。
只是略有相关,但仍然可能有助于我们的相同情况 – 我们使用远程存储库的networking文件共享。 上个星期的事情正在进行,本周我们得到了错误:“远程起源没有通告分支refs / heads / master Ref。这个Ref可能不存在于远程或可能被权限设置隐藏”
但是,我们相信没有做任何事情来腐化事情。 NFS做了快照,所以我查看了每个“以前的版本”,发现三天前,版本库的大小已经从282MB增加到了33MB,现在已经有大约1,403个新文件和300个文件夹了。 我询问了我的同事,当天有人试图推行 – 然后取消了。
我使用“还原”function将其恢复到该date之前,现在所有东西再次正常工作。 我曾尝试过修剪,似乎没有帮助。 也许更严厉的清理工作会起作用。
希望这可能会帮助别人有一天!
松鸦