GitGithub如何弥补提交记录contributions

Posted kbian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GitGithub如何弥补提交记录contributions相关的知识,希望对你有一定的参考价值。

提交记录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

以上是关于GitGithub如何弥补提交记录contributions的主要内容,如果未能解决你的问题,请参考以下文章

GitGitHub 使用说明(上)

再谈git和github-深入理解

GitGitHub 初认识

GitGitHub详解,看这一篇就够了!(持续更新中)

gitGithub如何取消fork的项目

gitgithub常用操作