keepdoingit 2020-02-23
提交记录contributions为什么会丢失?
很多朋友在提交本地项目到gihub时发现,仅仅在项目初始化时才会显示一条contributions,后续再commit就不会有了。这是因为:
如何弥补?
这里只针对第一条“进行Commits的用户、邮箱不是你的Github帐号的用户名和邮箱。”的弥补方式。
1、将本地开发环境的github的用户名和邮箱改为自己github的。(这个自己查一下,有很多教程,不再详细说明了)。
2、创建存储库的全新裸克隆:
git clone --bare https://github.com/user/repo.git cd repo.git
3、在git bash执行以下两个脚本
第一个脚本:修改以前邮箱用错的commit记录
git filter-branch --env-filter ‘
OLD_EMAIL="错误的邮箱"
CORRECT_NAME="github用户名"
CORRECT_EMAIL="github邮箱"
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;第二个脚本:修改以前用户名用错的commit记录
git filter-branch --env-filter ‘
OLD_NAME="错误的用户名"
CORRECT_NAME="github用户名"
CORRECT_EMAIL="github邮箱"
if [ "$GIT_COMMITTER_NAME" = "$OLD_NAME" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_NAME" = "$OLD_NAME" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
‘ --tag-name-filter cat -- --branches --tags;4、按Enter键运行脚本。
5、查看新的Git历史记录是否有错误。
6、将更正的历史记录推送到GitHub:
git push --force --tags origin ‘refs/heads/*‘
参考:
https://help.github.com/en/github/using-git/changing-author-info