4

Could you please help me? I have created a git branch with wrong name and I am not able to delete it because the name contains some crazy characters. I copied and pasted the name and unfortunately at the end of the text there were some unseen characters.

>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

I would like to delete the branch with the name of "refs/heads/feature/ABC-501-mapping?" but i do not know how :(

Thanks

zappee
  • 20,148
  • 14
  • 73
  • 129

3 Answers3

8

Try this:

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

Or,

$ cd .git/refs/heads
$ rm "feature/ABC-501-mapping?"
Sajib Khan
  • 22,878
  • 9
  • 63
  • 73
  • It seems this requires to have the local branch. Trying to delete the origin version left by someone else does not work like this. – U.V. Mar 31 '20 at 10:13
  • Which characters need to be escaped? https://stackoverflow.com/questions/15783701/which-characters-need-to-be-escaped-when-using-bash – alex Jan 22 '23 at 14:42
1

When I couldn't enter the special charater, I found a way to delete a remote branch by piping the name of the branch into the delete command:

git ls-remote|grep -i <partial name of the branch>|cut -f3 -d/|tail -1|xargs git push origin -d
Yair Galler
  • 111
  • 3
  • 4
0

Similar option to Yair.

I had luck copying the whole branch name (remote prefix and all) out of a git bash window via a git branch --all command (note: for me at least I was not seeing the special character in bash), then pasting it into a delete, and then deleting the remote prefix from branch name (from the left so as not to delete any special characters if they happen to be first).

You can optionally use a grep to narrow down your branch command

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