2015-06-11 102 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

相關問題