Git 修改或刪除某次提交信息
- 情況一:未推送到遠程倉庫
- 修改提交信息
- 刪除提交信息(替換為空信息)
- 修改歷史提交信息
- 刪除歷史提交信息
- 情況二:已推送到遠程倉庫
- 修改最新提交信息并推送到遠程倉庫
- 修改歷史提交信息并推送到遠程倉庫
情況一:未推送到遠程倉庫
如果你要修改或刪除的提交是最新的一次提交(即 HEAD 指向的提交),可以使用 git commit --amend
命令。
修改提交信息
git commit --amend -m "新的提交信息"
上述命令會直接用 "新的提交信息"
替換掉上一次的提交信息。
刪除提交信息(替換為空信息)
git commit --amend -m ""
執行該命令后,提交信息會被替換為空字符串。
如果你想要修改或刪除的不是最新的提交,而是歷史提交,可以使用 git rebase -i
(交互式變基)命令。
修改歷史提交信息
假設你要修改倒數第三次的提交信息,操作步驟如下:
- 啟動交互式變基:
git rebase -i HEAD~3
上述命令中的 HEAD~3
表示從當前 HEAD
開始往前數 3 個提交。執行該命令后,會打開一個文本編輯器,顯示類似如下內容:
pick 123abc 原始提交信息 1
pick 456def 原始提交信息 2
pick 789ghi 原始提交信息 3
# ...
- 將你要修改的提交前的
pick
改為reword
或r
,例如修改第二個提交信息:
pick 123abc 原始提交信息 1
reword 456def 原始提交信息 2
pick 789ghi 原始提交信息 3
- 保存并關閉編輯器,Git 會依次處理每個提交。當遇到
reword
的提交時,會再次打開編輯器讓你輸入新的提交信息。輸入完成后保存并關閉編輯器,即可完成提交信息的修改。
刪除歷史提交信息
步驟與修改歷史提交信息類似,只是在輸入新的提交信息時將內容清空,然后保存并關閉編輯器。
情況二:已推送到遠程倉庫
如果要修改或刪除的提交已經推送到遠程倉庫,在修改本地提交信息后,還需要強制推送到遠程倉庫。
修改最新提交信息并推送到遠程倉庫
git commit --amend -m "新的提交信息"
git push -f origin <分支名>
上述命令中,-f
是 --force
的縮寫,表示強制推送,會覆蓋遠程倉庫上的提交歷史,請謹慎使用。
修改歷史提交信息并推送到遠程倉庫
在使用 git rebase -i
修改歷史提交信息后,同樣需要強制推送到遠程倉庫:
git push -f origin <分支名>
強制推送可能會影響其他團隊成員的工作,因此在多人協作的項目中,建議先與團隊成員溝通協調。