2013-10-11 61 views
0

如果我暫存一個已更改的文件,然後再進行更改並重新暫存它,然後提交,我提交了兩個更改,還是隻進行了網絡更改?我假設答案是兩個,但我無法在Git書中找到它。在提交之前多次暫存一個文件

這出現在不想在我的web.config文件中提交未加密的密碼的上下文中。我構建了一個pre-commit鉤子,檢查相關部分是否加密,如果不是,則中止提交。但我意識到,如果我只是然後加密文件,並提交(沒有再次登臺),我仍然會提交未加密的文件。但是如果我再次重新演繹它然後再提交呢?我仍然會提交未加密的數據嗎?

回答

1

您只有一個階段區域緩衝區。在舞臺區沒有變化層次或時間的概念。

因此,如果您更改文件,對其進行分級,覆蓋以前的更改並重新進行修改。只有提交了前一個提交的最終差異。

總之,只有您在git diff中看到的更改被提交。

1

只是淨變化;第一個被第二個版本取代。最終,你會垃圾收集現在不相關的演出副本。

1

假設您在再次分級之前未移動或重命名該文件,則只會提交「淨更改」。通過運行git diff --cached,您可以在任何特定時間準確查看暫存區域中的內容。

0

當你運行提交時,git爲你暫存的時刻提供一個快照,並將它們存儲在存儲庫中。所以,它總是最新的階段版本進入提交。