2015-03-31 60 views
0

所以我讀了Version Control with Git, 2nd Edition,我無意中發現了這一段(第51章的「使用Git添加」當文件被修改時,git中保存了多少個文件版本?

你的大部分倉庫裏的一天到一天的變化將可能是簡單的編輯。在 之後,在提交更改之前,運行git add以更新索引 文件的絕對最新版本和最佳版本。 如果你不這樣做,你將有兩個不同的 版本的文件:一個在對象存儲中捕獲並從索引引用,另一個在你的工作目錄中。

讓我困惑的是粗體句子。 假設我做了相反的事情,我更改了一個文件,然後我運行了git add,現在文件已經上演。好吧,在我看來,現在我又有了兩個不同版本的文件:一個在對象存儲中捕獲,另一個在我的工作目錄中並引用索引。區別僅在於索引現在引用工作目錄中的文件而不是回購中的文件。

我錯過了一些作者想要強調的見解嗎? 「git」中可以存在多少個不同版本的文件? 「混帳」也不明確,但我想這意味着在工作目錄+對象存儲+索引。

回答

1

正在傳達的關鍵概念是你已經理解的一個概念:git add步驟對於防止工作樹和索引彼此不同。

「兩個不同的版本」顯然不是意味着只有兩個版本都可以存在;它更強調工作樹中的內容否則不包含在索引中,git新手常常無法掌握的概念。

1

如果你編輯一個文件,但不加它,git將有2個版本,因爲它不在對象存儲中管理。在你添加它之後,你在本地的版本現在是git對象存儲的一個版本

+0

該文檔明確提到了「簡單編輯」,而不是創建新文件,因此對象存儲中的副本清楚地*存在於場景中,甚至是預先提交。 (當然這很迂腐,但是這個問題是由於OP在閱讀文檔時出現的,並且期望它是迂迴正確的,而不是它的意圖)。 – 2015-03-31 21:53:36

相關問題