git 修改 Commit Message


修改 Commit Message

本文源自極客時間 《go 語言項目開發實戰 孔令飛》

本文是 rebase 命令的一個使用場景,關於rebase命令,可以參考這篇:git rebase 命令介紹

即使我們有了 Commit Message 規范,但仍然可能會遇到提交的 Commit Message 不符合規范的情況,這個時候就需要我們能夠修改之前某次 commit 的 Commit Message。

具體來說,我們有兩種修改方法,分別對應兩種不同情況:

  1. git commit --amend:修改最近一次 commit 的 message;
  2. git rebase -i:修改某次 commit 的 message。

接下來,我們分別來說這兩種方法。

git commit --amend:修改最近一次 commit 的 message

有時候,我們剛提交完一個 commit,但是發現 commit 的描述不符合規范或者需要糾正,這時候,我們可以通過 git commit --amend 命令來修改剛剛提交 commit 的 Commit Message。具體修改步驟如下:

1.查看當前分支的日志記錄。

$ git log –oneline
418bd4 docs(docs): append test line 'update$i' to README.md
89651d4 docs(doc): add README.md

可以看到,最近一次的 Commit Message 是 docs(docs): append test line 'update$i' to README.md,其中 update$i 正常應該是 update1。

2.更新最近一次提交的 Commit Message

在當前 Git 倉庫下執行命令:git commit --amend,后會進入一個交互界面,在交互界面中,修改最近一次的 Commit Message,如下圖所示:
image

修改完成后執行:wq 保存,退出編輯器之后,會在命令行顯示,該 commit 的 message 的更新結果如下:

[master 55892fa] docs(docs): append test line 'update1' to README.md
 Date: Fri Sep 18 13:40:42 2020 +0800
 1 file changed, 1 insertion(+)

3.查看最近一次的 Commit Message 是否被更新

$ git log --oneline
55892fa docs(docs): append test line 'update1' to README.md
89651d4 docs(doc): add README.md

可以看到最近一次 commit 的 message 成功被修改為期望的內容。

git rebase -i:修改某次 commit 的 message

如果我們想修改的 Commit Message 不是最近一次的 Commit Message,可以通過 git rebase -i <父 commit ID>命令來修改。這個命令在實際開發中使用頻率比較高,我們一定要掌握。具體來說,使用它主要分為 4 步。

1.查看當前分支的日志記錄。

$ git log --oneline
1d6289f docs(docs): append test line 'update3' to README.md
a38f808 docs(docs): append test line 'update$i' to README.md
55892fa docs(docs): append test line 'update1' to README.md
89651d4 docs(doc): add README.md

可以看到倒數第 3 次提交的 Commit Message 是:docs(docs): append test line 'update$i' to README.md,其中 update$i 正常應該是 update2。

2.修改倒數第 3 次提交 commit 的 message。

在 Git 倉庫下直接執行命令 git rebase -i 55892fa,然后會進入一個交互界面。在交互界面中,修改最近一次的 Commit Message。這里我們使用 reword 或者 r,保留倒數第 3 次的變更信息,但是修改其 message,如下圖所示:
image

修改完成后執行:wq 保存,還會跳轉到一個新的交互頁面,如下圖所示:
image

修改完成后執行:wq 保存,退出編輯器之后,會在命令行顯示該 commit 的 message 的更新結果:

[detached HEAD 5a26aa2] docs(docs): append test line 'update2' to README.md
 Date: Fri Sep 18 13:45:54 2020 +0800
 1 file changed, 1 insertion(+)
Successfully rebased and updated refs/heads/master.

Successfully rebased and updated refs/heads/master.說明 rebase 成功,其實這里完成了兩個步驟:更新 message,更新該 commit 的 HEAD 指針。

注意:這里一定要傳入想要變更 Commit Message 的父 commit ID:git rebase -i <父 commit ID>。

3.查看倒數第 3 次 commit 的 message 是否被更新。

$ git log --oneline
7157e9e docs(docs): append test line 'update3' to README.md
5a26aa2 docs(docs): append test line 'update2' to README.md
55892fa docs(docs): append test line 'update1' to README.md
89651d4 docs(doc): add README.md

可以看到,倒數第 3 次 commit 的 message 成功被修改為期望的內容。

這里有兩點需要你注意:

  • Commit Message 是 commit 數據結構中的一個屬性,如果 Commit Message 有變更,則 commit ID 一定會變,git commit --amend 只會變更最近一次的 commit ID,但是 git rebase -i 會變更父 commit ID 之后所有提交的 commit ID。
  • 如果當前分支有未 commit 的代碼,需要先執行 git stash 將工作狀態進行暫存,當修改完成后再執行 git stash pop 恢復之前的工作狀態。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM