2015-06-11 105 views
-1

我们都知道git status命令,它的输出的开头:在git中我们可以通过 - 来引用HEAD的原因是什么?

$ 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也是这样。

哪个语句--语法更自然?是否还有其他多个破折号快捷键,如---等?

+1

这将是伟大听到的人谁一直downvoting我的问题的一些反馈。 – noisy

回答

3

--不是特定于Git,也不是指HEAD

这是Unixy命令行工具中一个常用的参数,用于指示选项的结尾。基本上,它说:“跟随我的任何事情都是一个常规论证,而不是一个选项,即使它始于---”。

这是一个办法让工具操作上,比方说,一个名为--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许多命令。

又见

2

--只是一个分隔符,其表示一切自带之后将文件。

所以,当你说git checkout -- <file> 你正在执行命令git checkout专门为指定的文件。 而当你做git checkout没有指定分支/提交时,HEAD ref将被用作默认值。

所以git checkout -- <file>相当于git checkout HEAD -- <file>--只是一个分隔符

+0

是对的,那'''是bash特性而不是git? – noisy

+0

不,它不是bash功能。你的shell不会处理命令行的命令行参数。这只是接受命令行选项的程序的标准行为。 – larsks

相关问题