使用git删除包含特殊字符名称的分支

4

你能帮我吗? 我创建了一个名字错误的git分支,但由于名称中包含一些奇怪的字符,我无法删除它。我复制并粘贴了名称,但不幸的是在文本末尾有一些看不见的字符。

>git ls-remote
5fe385e6bd6b49f87f470e0a5b22b67042b179ad        HEAD
dbdadb9d8c630782144028d50f01b84a6ff61612        refs/heads/feature/ABC-495-test1
6660c993b5a5e35922a1f7b3f2bb75c6b0996f6e        refs/heads/feature/ABC-496
dbdadb9d8c630782144028d50f01b84a6ff61612        refs/heads/feature/ABC-501-mapping
dbdadb9d8c630782144028d50f01b84a6ff61612        refs/heads/feature/ABC-501-mapping?
5fe385e6bd6b49f87f470e0a5b22b67042b179ad        refs/heads/master

我想删除名称为 "refs/heads/feature/ABC-501-mapping?" 的分支,但我不知道该怎么做 :(
谢谢。
4个回答

8

试试这个:

$ git checkout master
$ git branch -D "feature\/ABC-501-mapping\?"         # delete local branch
$ git push origin :"feature\/ABC-501-mapping\?"      # delete remote branch

或者,

$ cd .git/refs/heads
$ rm "feature/ABC-501-mapping?"

似乎需要有本地分支。 试图删除其他人留下的原始版本不是这样操作的。 - U.V.
需要转义哪些字符?https://dev59.com/_WUo5IYBdhLWcg3wxBse - alex

1

当我无法输入特殊字符时,我找到了一种方法,通过将分支名称传输到删除命令中来删除远程分支:

git ls-remote|grep -i <partial name of the branch>|cut -f3 -d/|tail -1|xargs git push origin -d

0

类似于Yair的选项。

我有幸通过git branch --all命令从git bash窗口复制整个分支名称(包括远程前缀),然后将其粘贴到删除操作中,然后从分支名称中删除远程前缀(从左边开始以避免删除任何特殊字符,如果它们恰好在第一位)。

您可以选择使用grep来缩小您的分支命令范围。

git branch --all | grep <string to match branch>
git push origin --delete <copy pasted branch with deleted remote prefix>

0

我的特殊分支名称:60954_Plante_transient_60_pack_raf_odessa_r992�_fin

我用来删除分支的命令

git branch --all | grep 60954_Plante_transie | xargs git branch -D

已删除分支60954_Plante_transient_60_pack_raf_odessa_r992�_fin(原始提交为d6bfec3)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接