【Git】Github 上commit后,绿格子contribution却不显示?不知道怎么弥补?解决方法在这里

github 上commit后,绿格子(contribution)却不显示

问题描述

今天一直在github上面commit代码,但是github中并没有显示自己的contribution(没有绿色的格子),全是空白,网上一查是因为邮箱不一致导致的,难道以前的contribution就无法弥补回来了吗?这篇文章告诉你解决方法。

【Git】Github 上commit后,绿格子contribution却不显示?不知道怎么弥补?解决方法在这里_第1张图片

原因分析

哪些条件下,才符合Github的contribution?官方的解释如下

  • Issues 和 pull requests
    • ·这个操作是在一年内
    • 这个操作针对一个独立的仓库,不能是fork
  • Commits, 如果提交符合以下所有条件,则会在您的贡献图中显示:
    • 用于提交的电子邮件地址与您的 GitHub 帐户关联。
    • 提交在独立的仓库而不是fork仓库中进行。
    • 提交在以下位置进行:
      • 在仓库的默认分支中(通常为 master)
      • 在 gh-pages 分支 (包含 "About GitHub Pages."的仓库)
  • 此外,必须至少满足以下条件之一(主要针对你Commit的仓库不是你创建的):
    • 您是仓库中的协作者,或者是拥有该仓库的组织的成员。
    • 您已fork该仓库。
    • 您对这个仓库发起过pull request或者issue。
    • 您已为仓库标记star。
  • 24 小时内进行的提交
    进行满足计为贡献要求的提交后,您可能需要等待最长 24 小时才能看到在贡献图中显示的贡献。
  • Contributions未被Github计入的几个常见原因
    • 进行Commits的用户没有被关联到你的Github帐号中。
    • 不是在这个版本库的默认分支进行的Commit。
    • 这个仓库是一个Fork仓库,而不是独立仓库。

解决方法

这里只针对第一条“进行Commits的用户、邮箱不是你的Github帐号的用户名和邮箱。”的弥补方式。

1、将本地开发环境的github的用户名和邮箱改为自己github的。

在本地的项目中进入git指向如下命令,修改邮箱

git config --global user.email "你的邮件地址"
git config --global user.name "你的Github用户名"

2、创建存储库的全新裸克隆:

git clone --bare https://github.com/user/my-repo.git
cd my-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、执行完后,查看历史记录是否错误

git log

5、将更正的历史记录推送到GitHub

强制push所有的分支

git push --force --tags origin 'refs/heads/*'

你可能感兴趣的:(Linux/Git,异常配置,git,github)