3 回答

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