起因
今天看了下github,前几天commit的都没有记录,找了下原因,发现原来自己用的是公司项目commit的时候的邮箱,所以没有被记录。
如何排查
你可以在你的本地repo里用git log命令查看commit记录上的个人邮箱是否正确,我就是因为之前用的全局配置,都是xx@gmail.com ,但是其实我github上的邮箱是163的,所以Github就会认为这些commits都不是你提交的。
补救措施
以下为转载的解决办法。
- Mac、Linux下打开Terminal,Windows下打开命令提示符(command prompt)
- 给你的repo创建一个全新的clone
git clone --bare https://github.com/user/repo.git
cd repo.git
- 复制粘贴脚本,并根据你的信息修改以下变量: 旧的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
- 执行脚本
- git log 检查是否改过来了
- 把正确历史 push 到 Github
git push --force --tags origin 'refs/heads/*'
- 删掉刚刚临时创建的 clone
rm -rf repo.git
结束!
网友评论