本文須知
背景介紹
事情的起源是這樣的:迷戀的谷歌的我最近申請了一個新的 google 郵箱。然后果斷在 github 上更新了郵箱地址,並且刪除了之前的 163 等國內郵箱。
回到 github 首頁,我發現之前的項目提交記錄都沒了。到底什么情況(O_o)??
看一張災難現場圖:

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

所以,解決方法就是:更改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 信息如下。

通過git push --force強行推送修改后的 log 信息。
哈哈,我的 github又重新綠了起來。
