用 git commit --amend 修改 commit 紀錄

前言

在使用 Git 時,偶爾會在 commit 過程中發生一些小失誤,不管是 typo 或是部分檔案忘記加入 staged files 清單一起 commit。這種時候,git commit --amend 就是一個很方便的指令了。

--amend 參數介紹

根據 Git 官方說明,加上 --amend 參數會在「當前分支」產生一筆新的 commit 來取代最近一次的 commit 紀錄。如果沒有在使用 --amend 參數的同時追加使用 -m-F-c …等參數,預設會將當前分支最近一筆的 commit message 帶入用作修改預設值。

值得注意的是,說明提到「新的 commit」。表示 --amend 是用新的 commit 取代舊的,而不是直接修改原始 commit 內容,所以編號會被修改。

由於是產生一筆新的 commit ,所以最好只在尚未 push 到遠端儲存庫時使用。

--amend 使用

git commit --amend 使用時會像 git commit 一樣跳出預設文字編輯器,只是跳出時已將當前分支最近一次的 commit message 帶入。

只修改 commit message

當只想修改最近一次 commit 的 commit message (因為錯字或其他原因),不想變動 commit 的其他內容(檔案、作者訊息…等)。下面的指令可以二擇一使用:

1
2
3
4
5
# 會跳出文字編輯器(自動帶入前一個 commit message)
git commit --amend

# 直接輸入新的 commit message
git commit --amend -m "新的 commit message"

將漏掉的檔案加進最近一次的 commit 裡

有時候進行多個檔案的編輯,在進行 git add 時不小心漏掉了幾個檔案沒有加到。則可以用下列方式修改:

1
2
3
4
5
# 將檔案加入 staged files
git add file1.txt file2.txt

# 修改最近一次 commit
git commit --amend

文章內容如有錯誤,歡迎留言討論!


本 Blog 上的所有文章除特别聲明外,均採用 CC BY-SA 4.0 協議 ,轉載請註明出處!