起因
今天看了下github,前幾天commit的都沒有記錄,找了下原因,發(fā)現(xiàn)原來自己用的是公司項目commit的時候的郵箱,所以沒有被記錄。
如何排查
你可以在你的本地repo里用git log命令查看commit記錄上的個人郵箱是否正確,我就是因為之前用的全局配置,都是xx@gmail.com ,但是其實我github上的郵箱是163的,所以Github就會認(rèn)為這些commits都不是你提交的。
補救措施
以下為轉(zhuǎn)載的解決辦法。
- Mac、Linux下打開Terminal,Windows下打開命令提示符(command prompt)
- 給你的repo創(chuàng)建一個全新的clone
git clone --bare https://github.com/user/repo.git
cd repo.git
- 復(fù)制粘貼腳本,并根據(jù)你的信息修改以下變量: 舊的Email地址, 正確的用戶名, 正確的郵件地址
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="舊的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
- 執(zhí)行腳本
- git log 檢查是否改過來了
- 把正確歷史 push 到 Github
git push --force --tags origin 'refs/heads/*'
- 刪掉剛剛臨時創(chuàng)建的 clone
rm -rf repo.git
結(jié)束!