亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

git commit --amend如何工作?

git commit --amend如何工作?

Git
猛跑小豬 2019-11-20 14:12:00
我已經看到GIT commit --amend處于分離的HEAD狀態。這個問題要求答案比需要的要復雜。我想了解git commit --amend在正常的HEAD情況下如何工作。
查看完整描述

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將變得無法實現。


查看完整回答
反對 回復 2019-11-20
  • 3 回答
  • 0 關注
  • 2078 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號