正如他們在那裏說的那樣,「我們稍後會介紹」。 :-)關鍵是你可以繼續前進並承諾,永久的,你的臨時工作狀態的不可改變的副本。你可能會與此開始:
...--o--o <-- master
\
o--o--o <-- feature
,並在你的下一個承諾爲feature
工作的中間是。它還沒有準備好,但你必須修復其他地方(在master
或其他分支)。所以,如果你git add
一切,git commit
你會得到一個新的,永久性的,但是,你想學它到是暫時性的承諾:
...--o--o <-- master
\
o--o--o--● <-- feature
後來,你回來分支feature
,它有這個壞(堅實的黑色圓圈)提交。現在完成意圖的提交工作,並使用git commit --amend
。
做什麼git commit --amend
是使新的承諾像往常一樣,除了沒有加入其分支的末端,它塞到最近提交的旁白:
...--o--o <-- master
\
o--o--o--o <-- feature
\
● [abandoned]
這現在已經放棄了承諾,它仍然與任何Git一樣永久且不可更改,不再是可找到。如果您尋找從feature
開始並向後(向左)工作的提交,您將看不到它。如果你從master
開始尋找提交併且向後工作,你就不會看到它。唯一能找到它的方法是使用Git的推薦日誌,默認情況下,這些提交日誌至少需要30天才會掛起這些放棄的提交。
最終,保持提交●的reflog條目或條目到期。在這一點上,這個承諾不受git gc
蹂躪的鬣狗的保護:他們最終會發現並且肢解這個承諾,消耗掉它的骨頭和所有東西,而且它畢竟永遠不會成爲現實。
作爲永久的事情是在Git中,那就是:Git會努力去記住它,但一旦沒有辦法找到它,這樣的提交被收集起來的垃圾,扔出去。 Mercurial有點不同:永久提交是完全永久的,就像在Git中一樣,直到你運行hg strip
,這會消除它們及其所有後代。
沒有看過這個我不確定,但我的猜測是,這意味着你可以說'git commit -am「TEMPORARY:我到目前爲止所做的更改」',切換分支,然後當你來回到這個分支你可以將臨時提交修改爲一個真正的提交。 –