2013-01-08 49 views
6

我見過的命令,如:雙重破折號[ - ]選項在git reset上做了什麼?

git reset e542 -- readme.txt 

我理解中的readme.txt文件的內容,從提交E542在該指數命令看跌期權。但在那裏做--選項是什麼?

git reset手冊頁列出它爲前兩種形式的可選項,但我找不到它的含義。

git reset [-q] [<commit>] [--] <paths>… 
git reset (--patch | -p) [<commit>] [--] [<paths>…] 
+1

在旁註:你會在許多其他命令行工具上找到這個''--''語法,參見''rm'',''cp'',''chmod'',... –

+1

參見http://stackoverflow.com/questions/1192180/deleting-a-badly-named-git-branch/1192194#1192194 – VonC

+0

@VonC - 謝謝。很難找到,如果你不知道該找什麼。 – AngraX

回答

10

--分支名稱從文件名中分離,萬一有任何含糊之處(如果你有一個分支,並具有相同名稱的文件)。如果沒有歧義,則不需要--

也如Jonas Wielicki所述,這允許以-開頭的文件名;否則這些將被解釋爲命令行選項。

+3

另一個原因:文件名稱開頭一個''-''。 –

+0

謝謝。我猜想它可能是* nix命令中常用的模式。 – AngraX

0

我相信它只是從路徑列表中分離提交(這是一個可選參數)。如果你沒有分隔符,那麼就沒有辦法區分第一個參數是路徑還是提交。

+0

有些不正確。 Git可以做到這一點。提交是分支名稱或提交ID或其他類型的引用,所有這些都可以很容易地檢查(提交id是hexvalues,其他類型的引用可以在''.git''下的某些目錄中找到)。所以有一種方法可以將第一個參數與路徑區分開來,如果它的意圖是提交的話,則只有_only_如果它是不可信的。 –

+0

這就是我的意思,但我的答案沒有適當地捕捉到。 – Andy

相關問題