修改GIT已提交的用戶名和郵箱
原文:https://help.github.com/en/github/using-git/changing-author-info
說明
要更改在現有提交中記錄的名稱和/或電子郵件地址,必須重寫Git存儲庫的整個歷史。
警告:此操作會破壞存儲庫的歷史記錄。如果您正在與其他人協作創建存儲庫,則重寫已發布的歷史記錄被認為是不好的做法。你應該只在緊急情況下這樣做。
使用腳本更改存儲庫的Git歷史記錄
使用下面的腳本,更改已提交數據的author或committer。
操作步驟:
- 打開Linux Terminal(終端),如果是WIndow系統打開 Git Bash。
- 創建一個你的 repo 的全新裸 clone (repo.git 替換為實際項目)
git clone --bare https://github.com/user/repo.git
cd repo.git
- 復制並粘貼腳本,根據實際情況替換以下變量:
OLD_EMAIL
要替換的舊郵箱
CORRECT_NAME
當前用戶名
CORRECT_EMAIL
當前郵箱
腳本:
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"
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
- 按 Enter 執行腳本。
- 查看新 Git 歷史有沒有錯誤。
- 把正確歷史 push 到 Github :
git push --force --tags origin 'refs/heads/*'
- 清理臨時clone:
cd ..
rm -rf repo.git