Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除git中格式错误的远程分支/标记?_Git - Fatal编程技术网

如何删除git中格式错误的远程分支/标记?

如何删除git中格式错误的远程分支/标记?,git,Git,我不知道这是怎么发生的,但不知何故,当我运行git ls remote命令时,我们的远程回购有这样的分支和标记: refs/heads/abc^{} refs/tags/def^{} 我似乎不能用通常的方式删除它们: git push origin :refs/heads/abc^{} fatal: remote part of refspec is not a valid name in :refs/heads/abc^{} 如何删除这些格式不正确的远程分支?这不是一个分支,而是一个错误

我不知道这是怎么发生的,但不知何故,当我运行
git ls remote
命令时,我们的远程回购有这样的分支和标记:

refs/heads/abc^{}
refs/tags/def^{}
我似乎不能用通常的方式删除它们:

git push origin :refs/heads/abc^{} 
fatal: remote part of refspec is not a valid name in :refs/heads/abc^{}

如何删除这些格式不正确的远程分支?

这不是一个分支,而是一个错误分支的结果:

server$ echo echo 2e79bc84c11eda5d73add5a9dfc6bf03c50c432d > refs/heads/oogly
在本例中,我选择的SHA-1是一个带注释的标记。您不能让“git branch”或“git checkout”指向标记,它们总是剥离到提交,但您可以获得一个非git感知工具(如本例中的
echo
)来创建断开的分支

然后,在客户端:

client$ git ls-remote
[snip]
d1574b852963482d4b482992ad6343691082412f    refs/heads/master
2e79bc84c11eda5d73add5a9dfc6bf03c50c432d    refs/heads/oogly
676699a0e0cdfd97521f3524c763222f1c30a094    refs/heads/oogly^{}
[snip]
删除服务器上的实际分支(
oogly
在这种情况下,
abc
在您的分支中)也会使客户机上的“剥离标签”消失。请注意,如果要保存标记,应将标记指向它(如果还没有标记)

首先,我不知道这是如何在服务器上创建的

请注意,这对于(带注释的)标记是完全正常的:服务器提供标记及其SHA-1,以及它所指向的底层对象的SHA-1。语法记录在:

^{},例如v0.99.8^{}
后缀“^”后跟空大括号对表示对象可以
是一个标记,并递归地取消对该标记的引用,直到找到一个非标记为止
对象被找到。

您正在使用什么存储库?在GitHub中,在远程(也可能在BitBucket上)删除此分支是很简单的。我看不到一个界面可以在那里做这件事。你有没有试过简单地
git-push-origin:abc^{}
?您使用的是哪种服务?@isherwood是的,我也尝试过简化推送。不知道你说的服务是什么意思?我正在使用Gitlab。@VonC您以前见过这个问题吗?很有趣!你的技术奏效了。。。我制作了一个临时标记来保存位置,然后删除了基础的refs/heads/abc分支,正如您所假设的那样,它与坏分支/标记之间有1:1的相关性,然后最终只是重新创建了标记/分支。成功了!抱歉,我必须回溯一点:1)其中一些格式错误的分支实际上已经是标记,2)删除基础标记可以解决问题,但推上新创建的替换标记会再次产生问题!
   <rev>^{}, e.g. v0.99.8^{}
       A suffix ^ followed by an empty brace pair means the object could
       be a tag, and dereference the tag recursively until a non-tag
       object is found.