開發環境
- 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
- rebase 要修改Commit紀錄的前一筆Commit ID 進入VI互動模式
git rebase -i ff37
進入VI互動模式時
按下 a 進入編輯模式 進行修改
修改完成後, 按下 Esc 離開 輸入 :wq! (強制儲存離開)
- 修改第二筆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"
rebase 要修改Commit紀錄的前一筆Commit ID
git rebase -i ff37
修改第二筆Commit紀錄
在第二筆CommitID 下一行 修改Author & Emailexec 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
修改第一筆Commit紀錄比較特別 因它是第一筆,rebase時不能找前一個CommitID來rebase,需rebase root
git rebase -i --root
修改第一筆Commit紀錄
在第一筆CommitID 下一行 修改Author & Emailexec 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),請我喝杯咖啡