在git中我们可以通过 - ?引用HEAD的原因是什么?

时间:2015-06-11 12:05:55

标签: git git-checkout

我们都知道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也是如此。

哪种语句--语法更自然?是否还有其他多个短划线快捷键,例如---等?

2 个答案:

答案 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>--只是一个分隔符