本篇重點
git commit --amend
修改最新一次提交的資訊或是內容git commit --amend --author
修改提交的作者和信箱git commit --amend --reset-author
重置提交的作者和信箱git commit --amend -m
修改提交訊息git commit --amend --no-editor
提交修改但不修改提交訊息- 每次修改提交
git commit --amend
都會變更提交 ID
在使用 Git 時,提交(commit)後才發現需要修改提交的資訊或內容。Git 提供了 git commit --amend
指令,能夠修改最新一次提交的內容或資訊,這樣能夠避免新增額外的提交,保持乾淨的提交歷史。
修改提交資訊
修改提交的作者和信箱
提交的作者和信箱是透過 git config 指令來設定的
1 | git config --global user.name "你的名稱" |
修改最新一次提交的作者名稱和信箱
方法一,git commit --amend --reset-author
設定正確的作者名稱和信箱資訊
1 | git config --global user.name "forgetfulengineer" |
重置作者名稱和信箱資訊
1 | git commit --amend --reset-author |
方法二,git commit --amend --author
1 | git commit --amend --author="新作者名稱 <新信箱>" |
修改提交訊息
修改最新一次提交的訊息
1 | git commit --amend -m "修改後的提交訊息" |
範例
原本的提交訊息為「修正錯誤」,修改改成「修正登入功能錯誤」
1 | git commit --amend -m "修正登入功能錯誤" |
修改提交內容
使用 Git 時,我的提交習慣是根據遠端分支的狀態來決定處理方式。如果提交尚未推送到無法強制修改的遠端分支(例如 master
或 main
),我會保持每個提交精簡且整潔,避免有修正型的提交。例如,在設計網站的樣式並進行提交時,如果尚未更新到這些重要的遠端分支,仍處於自己的開發分支中,發現有需要修正的部分時,我不會新增一個修正提交,而是直接修正後再合併到原提交中,確保分支保持整潔。
但是當提交已經推送到無法強制修改的遠端分支時,為了避免影響該分支的穩定性,我會選擇透過提交一個新的修正分支,保留修改記錄的完整性。
新增內容到最新一次的提交
在最新一次提交中加入新的修改,並使用 git commit --amend --no-edit
更新提交,這樣會將新添加的內容更新到最新一次的提交中,並保留原提交訊息跟資訊(作者、信箱)
1 | git add example.js |
不更改提交訊息
如果不需要修改提交訊息,可以加上 --no-edit
選項,保持原提交訊息不變:
1 | # 提交當前檔案 |
結論
git commit --amend
是非常靈活的指令,用於修正最新一次提交的錯誤資訊或內容。然而需要注意的是,每次執行 git commit --amend
都會產生一個新的提交 ID,因此在使用時務必確認不會影響遠端分支的進度,尤其是在多人開發的專案中更需謹慎,以免造成分支衝突或其他協作問題。