Git 修改Message & Author & Email & Committer

開發環境

  • Windows 10 (home 20H2)
  • Git (git version 2.31.1.windows.1)

修改Author & Email & Committer

假設目前在版控中的專案的Author 有異常
(e.g. Author忘記設定導致吃到global設定 or 忘記切換git user 等等 哩哩摳摳的事情)
且已經有Commit紀錄了 此時可由以下步驟來做修改

目前git紀錄

修改第二筆Commit紀錄的 Author & Email

  1. rebase 要修改Commit紀錄的前一筆Commit ID 進入VI互動模式
    git rebase -i ff37
    

進入VI互動模式時
按下 a 進入編輯模式 進行修改
修改完成後, 按下 Esc 離開 輸入 :wq! (強制儲存離開)

  1. 修改第二筆Commit紀錄
    在第二筆CommitID 下一行 修改Author & Email
exec git commit --amend --author="Author Name <email@address.com>" --no-edit

此時查看目前log異動狀況
發現 第二筆Commit紀錄的 Author & Email 已被修改
但進一步查看時 發現 Committer 還是舊的,因Committer需要另行修改

git log
git show --pretty=fuller ff37
git show --pretty=fuller 3cd2
git show --pretty=fuller f30d

修改第二筆Commit紀錄的 Author & Email & Committer By user

先列出目前 Git user

git config user.name
git config user.email 

修正目前Git版控資料夾內的user.name & user.email

git config user.name "New Author Name"
git config user.email "new_email@address.com"
  1. rebase 要修改Commit紀錄的前一筆Commit ID

    git rebase -i ff37
    

  2. 修改第二筆Commit紀錄
    在第二筆CommitID 下一行 修改Author & Email

    exec git commit --amend --reset-author --no-edit
    

再查看一次 目前異動狀況
發現 第二筆Commit紀錄的 Author & Email & Committer 已被 user.name & user.email 覆蓋
有另一點需要特別注意 第三筆Commit紀錄 雖然Author & Email 未被覆蓋
但Committer與CommitDate已被刷新,因rebase是重新建立新的Commit紀錄 不是修改
所以可以發現第二筆和第三筆CommitID(SHA)被異動了,因為它們是新的Commit紀錄
這也導致第三筆的Committer和CommitDate被更改 需要特別注意

git log
git show --pretty=fuller ff37
git show --pretty=fuller f5da
git show --pretty=fuller 6dcb

補充

修改第一筆Commit紀錄的 Author & Email

先列一下 目前Git log 情況
w4560000 是錯誤的Author 已經Commit兩筆紀錄了

git log
git show --pretty=fuller e51d
git show --pretty=fuller 6ac4

  1. 修改第一筆Commit紀錄比較特別 因它是第一筆,rebase時不能找前一個CommitID來rebase,需rebase root

    git rebase -i --root
    

  2. 修改第一筆Commit紀錄
    在第一筆CommitID 下一行 修改Author & Email

    exec git commit --amend --author="First Author Name <firstemail@address.com>" --no-edit
    

此時查看目前log異動狀況 確認第一筆是否已被修改且第二筆正常

git log
git show --pretty=fuller a318
git show --pretty=fuller a9a1


轉載請註明來源,若有任何錯誤或表達不清楚的地方,歡迎在下方評論區留言,也可以來信至 leozheng0621@gmail.com
如果文章對您有幫助,歡迎斗內(donate),請我喝杯咖啡

斗內💰

×

歡迎斗內

github