2017-06-15 123 views
0

根據本書版本控制與Git,「git diff顯示您的工作目錄和索引之間的區別,它暴露工作目錄中的髒東西,因此是您的下一個提交階段的候選人。 「在git diff中比較哪些文件?

「git diff顯示您的工作目錄和索引之間的區別」是什麼意思?當你修改一個文件並運行git diff時,暫存區中沒有任何東西可以讓git比較工作目錄,因爲你還沒有登臺,所以它比較什麼?

+0

該指數不包括 「一無所有」,它包含處於最新提交狀態的存儲庫的內容。 – mkrieger1

+0

與使用git diff HEAD的上次提交進行比較有什麼不同? –

+0

直到您修改索引後纔會有所不同。 – mkrieger1

回答

2

如果您的存儲庫狀態爲是乾淨的,意味着您尚未修改任何文件,那麼索引與提交HEAD指向的存儲庫狀態相匹配。

在這種情況下,如果修改文件,然後執行git diff,則修改後的文件(在您的工作區域中)將與索引進行比較,該索引將顯示與將其與當前提交進行比較相同的差異。但是,如果您現在創建該文件(git add that-file),然後再次修改該文件,並執行另一個git diff,則會將修改後的文件(在您的工作區中)與索引中的暫存和修改文件進行比較。這與現在與HEAD提交的比較不同。

如果您運行這些命令,你會看到git diff與C,而不是用C比較B:

git init . 

echo a >test.txt 
git add . 
git commit -m "Initial commit" 

echo b >test.txt 
git add . 

echo c >test.txt 
git diff 

輸出:

diff --git i/test.txt w/test.txt 
index 2fea07c..12d6973 100644 
--- i/test.txt 
+++ w/test.txt 
@@ -1 +1 @@ 
-b 
+c