2016-07-31 35 views
0

文件說:git reset文檔 - 它如何與git add相反?

git reset [-q] [<tree-ish>] [--] <paths>... 

這種形式在<tree-ish>重置所有<paths>自己的狀態索引條目。 (它不影響工作樹或當前分支。)

這意味着git reset <paths>git add <paths>相反。

我有點覺得「......這意味着git reset是git add的反面......」是錯誤的。

如果git add從工作目錄複製到索引,人們可能會認爲,從索引到工作目錄複製相反。

但是這種形式的git reset從樹木複製到索引和git checkout-index實際上會做相反的事情。

這與git add相反嗎?如果它不相反,是否值得嘗試更新文檔?

+3

'git add'在暫存區域中添加更改。 'git reset'從暫存區域中刪除更改。這就是爲什麼它們是相反的:它們相互撤銷(至少在簡單的用法中,當樹指定或' - soft/- hard'被指定時,這會改變)。 –

+0

我明白你在說什麼,並且已經熟悉git,我傾向於說你很迂腐。但這聽起來像是一位新人的有用見解,因此可能會在博客文章中提到一個好點。 –

+0

另外,是否有可能在索引中還沒有在工作目錄中的東西?我現在正在使用手機,所以無法測試,但似乎從索引複製到工作目錄可能是不可能的。 –

回答

2

描述GIT中復位的這種特殊的方式是在commit 7b8cd49引入由Thomas Rast (trast) GIT中v1.7.3.2(2010年7月)

此時,所述discussion proposed the initial form

這意味着git reset <paths>是的git add +<paths>相反,只要該<paths>已經跟蹤

JUNIO C.濱野評價:

以上是「有路徑」模式比我們目前有的更清晰的描述。不過,我懷疑我們需要「,但前提是......」。

git reset HEAD frotz」從頭提交沒有frotz從索引中刪除frotz,不是?

我在「git reset vs git reset HEAD」中提到過git reset <tree-ish> <file>如何取消(取消添加)文件。

當您只考慮索引(而不是工作目錄)時,git reset <tree-ish> <file>確實與git add相反。