我们都知道git status
命令,并开始输出:
$ git status
On branch add_multiple_items_to_set__to_master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
最后提到的一行表明我们应该使用--
来引用上次提交 - HEAD
。
我总是想知道这是从哪里来的。我花了一段时间才发现,我可以使用git checkout HEAD <file>...
并期望同样的结果,git log -1 --
和git log -1 HEAD
也是如此。
哪种语句--
语法更自然?是否还有其他多个短划线快捷键,例如---
等?
答案 0 :(得分:3)
--
并非特定于Git,并且不会引用HEAD
。
这是Unixy命令行工具中常用的参数,表明选项的结束。基本上,它表示&#34;跟随我的任何事情都是常规论证,而不是一个选项,即使它始于-
或--
&#34;。
这是一种让工具操作的方法,例如,一个名为--foo
的文件:
git checkout --foo
# Um... I don't have an option called --foo. Time to bail out!
git checkout -- --foo
# Ooh, look! I'll operate on this perfectly valid file called --foo
Git恰好默认使用HEAD
来执行许多命令。
另见
答案 1 :(得分:2)
--
只是一个分隔符,表示后面的所有内容都是文件。
所以,当你说git checkout -- <file>
时
您正在为指定的文件专门执行命令git checkout
。
当你在没有指定分支/提交的情况下执行git checkout
时,HEAD引用将被用作默认值。
因此git checkout -- <file>
相当于git checkout HEAD -- <file>
而--
只是一个分隔符