【Git】Github如何弥补提交记录contributions

keepdoingit 2020-02-23

提交记录contributions为什么会丢失?

很多朋友在提交本地项目到gihub时发现,仅仅在项目初始化时才会显示一条contributions,后续再commit就不会有了。这是因为:

  1. 进行Commits的用户、邮箱不是你的Github帐号的用户名和邮箱。
  2. 不是在这个版本库的默认分支进行的Commit。
  3. 这个仓库是一个Fork仓库,而不是独立仓库。

如何弥补?

这里只针对第一条“进行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/setting-up-and-managing-your-github-profile/why-are-my-contributions-not-showing-up-on-my-profile

https://help.github.com/en/github/using-git/changing-author-info

相关推荐