2012-11-10 146 views
176

這個git命令中的文件名之前的雙破折號是什麼意思?Git結帳雙破折號的含義

git checkout --ours -- path/to/file.txt 
git checkout --theirs -- path/to/file.txt 

它們是強制性的嗎?它是相當於

git checkout --ours path/to/file.txt 
git checkout --theirs path/to/file.txt 
+19

這是一個shell表達式。請參閱http://unix.stackexchange.com/questions/11376/what-does-double-dash-mean – iltempo

+9

@iltempo:Git略有不同。對於Git,在樹和路徑看起來相同的情況下,它將樹與路徑分開。 –

+0

@Dietrich_Epp。我懂了。感謝澄清。 – iltempo

回答

254

假設我有一個名爲我的Git倉庫path/to/file.txt文件,我想恢復它的變化。

git checkout path/to/file.txt 

現在假設文件被命名爲master ...

git checkout master 

哎呦!相反,這改變了分支。 --將要檢出的樹與要檢出的文件分開。

git checkout -- master 

它也幫助我們,如果一些freako添加了一個名爲-f我們的庫文件:

git checkout -f  # wrong 
git checkout -- -f # right 

這在git-checkout: Argument Disambiguation記錄。

+10

對許多bash命令來說,這不僅僅是git命令,對嗎? – NHDaly

+28

@Nhdaly:是的,這是真的。但是,術語說明:「Bash」只有幾個命令(大概20個左右),大多數命令都是與Bash分開的程序。它實際上是POSIX標準的一部分,'--'可以用來將選項與其他參數分開,所以你可以在'cp'和'mv'(它們不是Bash的一部分)這樣的命令中看到它。 –

+4

任何想法爲什麼這個語法在'checkout'命令文檔中沒有正確描述? – TanguyP

67

雙破折號「 - 」的意思是「命令行標誌的結束」,即它告訴前面的命令不要試圖解析命令行選項後面的內容。