Git 實戰手冊(一): 批量修改log中的提交資訊
本文須知
背景介紹
事情的起源是這樣的:迷戀的谷歌的我最近申請了一個新的 google 郵箱。然後果斷在 github 上更新了郵箱地址,並且刪除了之前的 163 等國內郵箱。
回到 github 首頁,我發現之前的專案提交記錄都沒了。到底什麼情況(O_o)??
看一張災難現場圖:

1
仔細查找了相關資料,發現了是因為之前的提交記錄中 Author
欄位的資訊是 163 等國內郵箱的。如下:

2
所以,解決方法就是: 更改 log
中的提交資訊 。
簡單嘗試:
通過百度,發現通過如下命令可以修改:
git commit --amend --author='名稱 <郵箱>'
但是,這隻能修改最近一條。 如何批量修改 log 資訊呢?
解決方法
通過 google,發現 stackoverflow
上早有人提問, 請移步牆外 。
同時, Github
官方也提供了指令碼,雖然倉庫沒了,但是複製指令碼,然後執行即可, 移步這裡
首先,我們建立change.sh指令碼,並根據個人資訊複製以下指令碼。
#!/bin/sh git filter-branch --env-filter ' OLD_EMAIL="填寫原來的郵箱" CORRECT_NAME="填寫現在的名稱" CORRECT_EMAIL="填寫現在的郵箱" if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] then export GIT_COMMITTER_NAME="$CORRECT_NAME" export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL" fi if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ] then export GIT_AUTHOR_NAME="$CORRECT_NAME" export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL" fi ' --tag-name-filter cat -- --branches --tags
將指令碼移入要修改的 git
倉庫,並執行指令碼 。修改後的 log 資訊如下。

3
通過 git push --force
強行推送修改後的 log 資訊。
哈哈, 我的 github 又重新綠了起來。