Meaning of Git checkout double dashes
在这个git命令中,文件名前面的双破折号是什么意思?
1 2
| git checkout --ours -- path/to/file.txt
git checkout --theirs -- path/to/file.txt |
它们是强制性的吗?它等同于
1 2
| git checkout --ours path/to/file.txt
git checkout --theirs path/to/file.txt |
号
- 这是一个shell表达式。请参阅unix.stackexchange.com/questions/11376/…
- @iltempo:Git有点不同。对于git,它将树与路径分开,以防树和路径看起来相同。
- @迪特里希·埃普。我懂了。谢谢你的澄清。
- 还记录在stackoverflow.com/a/1192194/6309中
- "git checkout"和"git checkout--之间的差异重复
- 它是一个副本,但这个副本至少可以通过查询"git double dash"进行googleable。
- 在Timmcliu的文章中只添加一个词来澄清他的意思:"双破折号"-"表示"命令行结束标志",也就是说,它告诉前面的命令不要试图解析后面作为命令行选项的内容。"
假设我的Git存储库中有一个名为path/to/file.txt的文件,我想恢复对它的更改。
1
| git checkout path/to/file.txt |
现在假设文件名为master…
号
哎呀!而是改变了分支。--将要签出的树与要签出的文件分开。
如果某个freako将名为-f的文件添加到我们的存储库中,它也会帮助我们:
1 2
| git checkout -f # wrong
git checkout -- -f # right |
。
这在git checkout:argument消歧中有记录。
- 很多bash命令都是这样的,不仅仅是git命令,是吗?
- @是的,这是真的。然而,术语注释:"bash"只有几个命令(可能20个左右),大多数命令是独立于bash的程序。实际上,可以使用--将选项与其他参数分开,这是posix标准的一部分,因此您可以在cp和mv等命令中看到它(它们不是bash的一部分)。
- 你知道为什么在checkout命令文档中没有正确地描述这种语法吗?
- @Tanguyp:看起来像是在git-scm.com/docs/git-checkout的顶部描述的。
- @Dietrichepp在一些地方,它被列为checkout命令的一个可能参数,但是文档中没有解释它做什么,也没有解释为什么使用它……这就是最终把我带到这里的原因。
- @克里斯:实际上在医生那里。概要:git checkout [-p|--patch] [] [--] […?]中,[--]表示可以任选地使用--将树与路径分开。
- @Dietrichepp是正确的,但是在进入堆栈溢出之前,我已经阅读了语法(和示例),我仍然不明白为什么人们会或不会使用--。作为一个不来自Linux背景的人,这并不是显而易见的。在我看来,它似乎是特定于Git的语法,没有描述它的功能用途。我认为最好像其他选项那样有一个简短的描述,或者至少有一个到Linux手册页的链接。
- @克里斯:你总是可以参考"手册页"手册页,它解释了"概要"部分的惯例。概要中没有给出意义的任何内容通常只是命令语法的一部分,比如--。man7.org/linux/man-pages/man7/man-pages.7.html版
- @最后一部分是关于消除选项和位置参数之间的歧义,而这些恰好是从-开始的,一般来说是正确的。使用--消除不同类型位置参数(例如,在git-checkout的情况下,"树型"和"路径")之间的歧义非常奇怪。我从来没有听说过像吉特这样的人。
- git scm.com/docs/git checkout u参数消除歧义
- IMO这个问题只存在,因为签出文件和分支是单独的命令。
双破折号"--"表示"命令行结束标志",即它告诉前面的命令不要尝试解析命令行选项之后的内容。