3 回答

TA貢獻1780條經驗 獲得超5個贊
假設您處于干凈的工作狀態,并且您的回購如下所示:
如果你再跑
git commit --amend
編寫提交消息,保存并退出編輯器,將發生以下情況:
暫存區域,如果你還沒有上演任何新的變化,將是相同的承諾f42c5-is用于創建一個新的提交:31b8e。它的父級將與您要修改的提交的父級相同f42c5。
該master分支參考移到點到新的提交(31b8e)。
該HEAD參考如下master。
請注意,現在修改后的commit(f42c5)無法從您的存儲庫中的任何引用中獲得(因此在我的圖表上其為“透明”樣式)。它仍然存在于存儲庫的對象數據庫中,但是當Git運行其定期內務處理時,或者如果您通過運行git gc(垃圾回收)顯式觸發它,則最終將被永久刪除。
附錄(基于Jason Baker的評論):請注意,只要修改過的commit f42c5仍然存在于您的倉庫中,您就可以找出其commit ID(例如,通過從master分支的reflog中進行釣魚),您仍然可以簽出。跑步
git checkout master # just to be sure that master is the current branch
git reset --hard f42c5
或(假設與此同時,您尚未對master,重置master或以其他方式移動master分支引用進行任何新的提交)
git checkout master # just to be sure that master is the current branch
git reset --hard master@{1}
將使您處于以下情況:
但是現在,提交31b8e將變得無法實現。
- 3 回答
- 0 關注
- 2078 瀏覽
添加回答
舉報