Git

git 的暫存(索引)區域的推理?

  • May 21, 2019

我正在尋找在 git 中發明暫存/索引區域的原因。與其他修訂控制系統相比,這似乎是一個額外的步驟。這一定是有充分理由的。這就是我要找的。

注意:我不需要知道如何使用它,因為我已經積極使用 git 一段時間了,並且了解通過暫存到最終記憶體來提升內容。

為什麼“git commit -a”不是預設的?Git FAQ中的條目解釋了最常見的原因。

該索引對於僅送出工作樹中的一些更改很有用。

考慮以下場景:

  1. 您正在開發一項新功能;在開發此新功能時,您對工作樹文件進行了多次編輯。
  2. 你發現了一個需要修復的錯誤;您繼續進行編輯以修復新錯誤。
  3. 您現在有一個工作樹,其中包含兩種類型的更改:“新功能”和“錯誤修復”。

您可以使用索引進行僅包含“錯誤修復”更改的送出,而無需隱藏您的“新功能”更改。您甚至可以使用git add -p僅暫存每個已更改文件的部分更改。

有些人避免使用這種特殊技術,因為它允許您送出無法完全獨立測試的內容(送出 == “錯誤修復”,但工作樹(和測試環境)== “錯誤修復”+“新功能”)。實際上,如果您確定“錯誤修復”和“新功能”更改是獨立的,那麼即使您的工作樹也有“新功能”更改,您也應該能夠有效地測試“錯誤修復”更改。

一個可能不太令人反感的案例涉及在工作樹中攜帶“僅限本地”的更改,而無需送出它們。假設儲存庫包含一個需要在您的工作環境中稍作更改的配置文件(更改使用者名、電子郵件地址等)。您可以使用索引來暫存和送出除本地配置更改之外的所有內容。該機制與之前的案例相同;不同之處在於,通常更容易說服自己,僅本地配置更改不依賴於您可能進行的任何其他可能更改。

引用自:https://serverfault.com/questions/196533