删除一个命名不正确的git分支

我知道这不是严格的编程问题,但它与git有关。 我不小心在git中创build了一个名为--track的分支(合并远程分支时,我得到了错误的选项顺序)

常规命令不起作用:

 git branch -D "--track" 

我试图用引号和反斜杠来逃避,但是都没有成功。

有任何想法吗?

你试过了吗

 git branch -D -- --track 

? “ -- ”通常是“接下来不是一种select,不pipe它的名字是什么”


从“ Unix编程的艺术 ”,“ 命令行选项 ”一节:

认识一个双连字符作为停止选项解释的信号也是常规的,从字面上处理所有后面的论点。

你会发现在其他(不需要Unix相关的)CLI(命令行界面)中的约定,如cleartool :

如果nonoption参数以连字符( )字符开头,则可能需要在其前面加上双连字符参数,以防止将其解释为选项:

 cleartool rmtype -lbtype -- -temporary_label- 

P18 (一个快速和灵活的文件预处理器,具有macros处理能力和对国际化的特殊支持)也提到了这个约定背后的一般思想:

所有传递给命令的选项参数都以一个连字符开头。
所有选项参数(如果有)必须位于所有非选项参数之前。
选项参数的结尾可以使用双连字符来表示,如果非选项参数以连字符开头,这是非常有用的。 使用双连字符来终止选项参数列表适用于所有命令,即使是那些不带任何选项参数的命令。

Ruby编写的OptionParser工具也很清楚地说明了:*

选项分析终止

按照约定,双连字符是停止选项解释并从字面上读取命令行上的其余语句的信号。 所以,一个命令如:

  app -- -x -y -z 

将不会“看到”三个模式标志。 相反,它们将被视为应用程序的参数:

  #args = ["-x", "-y", "-z"] 

注意:有时候,它需要三个破折号而不是两个,特别是当CLI严格遵循Gnu选项样式时:

Gnu样式的命令行选项提供对选项字(或关键字)的支持,但仍然保持与Unix样式选项的兼容性。
这种风格的选项有时被称为long_options ,Unix风格的选项被称为short_options
long_options之前用两个破折号来保持兼容性

类似于Unix风格的双连字符“ -- ”,Gnu风格有一个三重连字符“ --- ”来表示选项parsing被暂停,并将其余文本作为参数(即从命令中逐字读取线)

所以…如果' -- '不够(应该用Git命令),试试' --- '

 git branch -D -- --track 

我正在使用msysgit 1.7.0.2和build议的解决scheme不起作用:

git分支-D – –track#不起作用

没有错误报告,但分支仍然存在。 我结束了通过强行删除分支:

rm .git / refs / heads / – track

双连字符不适用于我的远程分支名称包含双引号和&符号。 然而,包装名称引号和转义包含的报价做了这个工作:

 git push origin --delete "123-my-branch-&-some\"quoted-text\"" 

和本地:

 git branch -D "123-my-branch-&-some\"quoted-text\"" 

我有一个类似的问题,我不小心以“-r”分支结束了。 我无法弄清楚如何使用git命令删除它,所以我只是将其删除.git文件夹中:

$ cd .git/refs/head $ ls *r -r $ rm "*r"

这个解决scheme只是安全的,因为它是唯一一个以“r”结尾的分支,但它确实解决了这个问题。

你可以使用软件mamed sourcetree,它可以删除你喜欢的任何分支。