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

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

常规命令不起作用:

git branch -D "--track"  

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

有任何想法吗?


你试过了吗

git branch -D -- --track

? “ -- ”通常是“以下不是一种选择,不管它的名字”


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

将双连字符识别为停止选项解释的信号也是常规的,并按照字面意思处理所有后面的论点。

您会在其他(不需要与Unix相关的)CLI(命令行界面)(如cleartool)中找到该约定:

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

cleartool rmtype -lbtype -- -temporary_label- 

P18(一种快速灵活的文件预处理器,具有宏处理功能和对国际化的特殊支持)也提到了这一点,并对该规范背后的总体思想进行了很好的描述:

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

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

选项分析终止

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

 app -- -x -y -z

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

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

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

Gnu样式的命令行选项提供对选项字(或关键字)的支持,但仍保持与Unix样式选项的兼容性。
这种风格的选项有时被称为long_options ,而Unix风格的选项被称为short_options
通过在两个短划线之前的long_options来维护兼容性

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

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


git branch -D -- --track

我使用的是msysgit 1.7.0.2,建议的解决方案不起作用:

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

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

rm .git / refs / heads / - track

链接地址: http://www.djcxy.com/p/50861.html

上一篇: Deleting a badly named git branch

下一篇: Difference between "git checkout <filename>" and "git checkout