[英]Amending first commit message in git?
假設我有一個提交消息日志,是否可以修改第一次提交消息?或者這就是為什么我們不能將第一次提交作為初始提交的原因。
您實際上不能更改 任何提交。 “修改”的作用(或交互式rebase中的“ reword”)是制作提交的新副本 。 在此副本中,您完全更改了需要更改的內容,其余所有相同。
這里的問題是,所有后續提交最終都指向原始的第一次提交,而不是副本。 例如,假設恰好有三個提交。 我們稱它們為A
, B
和C
分支標簽master
指向提交C
但是,提交C
指向B
,而B
指向A
由於A
是初始提交,因此鏈到此結束(這就是您知道一次提交是初始提交的方式:它指向任何人都沒有。)
A <- B <- C <-- master
現在,您建議將提交A
復制到一些新的提交中,我們稱它為A'
:
A <- B <- C <-- master
A'
為了使此功能有用,您現在還必須復制B
和C
,每個都做一個更改: B
的副本(我們稱為B'
)必須指向A'
,而C
的副本必須指向到B'
:
A <- B <- C <-- master
A' <- B' <- C'
一旦以此方式復制了每個提交,就可以將標簽master
更改為指向最后一個副本(此處為C'
):
A <- B <- C
A' <- B' <- C' <-- master
現在,可以安全地放棄原始的ABC
提交鏈,因為您已經復制了您關心的所有內容,同時進行了必要的更改以使新的A'-B'-C'
鏈看起來像您想要的那樣。
一直回到root提交的方法是使用git rebase -i --root
。 但是,與所有重新定基或“編輯歷史記錄”的任何其他方式一樣,這將使任何人早日獲得您的作品的出版副本並認為您仍然提交ABC
而不是新的A'-B'-C'
序列。 因此,如果您的存儲庫是由其他人克隆或推送給其他人的,則不要這樣做,或者至少在沒有與他們討論之前,不要這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.