今天突然发现自己好多次的commits都没有被记录在Contributions中,但是点开项目详情里面可以看到自己的commit确实上传成功了,以前一直没有注意,为什么没有绿呢?

然后去了解了下Contributions的规则,发现只会记录以下几种:

计算规则

Issues 和 pull requests
  • 这个操作是针对一个独立的仓库,不能是fork
Commits

如果提交符合以下所有条件,则会在您的贡献图表上显示:

  • 用于提交的电子邮件地址与您的GitHub帐户相关联。
  • 提交是在独立的存储库中进行的,而不是fork。
  • 提交的内容如下:
    • 在存储库的默认分支(通常master)
    • 在gh-pages分支中(对于具有Project Pages站点的存储库)

此外,必须至少满足下列条件之一(主要针对你Commit的仓库不是你创建的):

  • 你是仓库的协作者,或者是这个版本库的拥有组织中的一员。
  • 你已经fork了存储库。
  • 你对这个仓库发起过pull request或者issue。
  • 你对这个仓库标记了Star。

注意:私有库的贡献仅仅对私有库成员显示

Contributions未被Github计入的常见原因

  • 进行Commits的用户没有被关联到你的Github帐号中。
  • 不是在这个版本库的默认分支进行的Commit。
  • 这个仓库是一个Fork仓库,而不是独立仓库。

解决方法

配置Commits的账户和Github帐号相同

在终端里输入 vi ~/.gitconfig ,其中email后的邮箱需要和你github上的一致,如下:

[user]
        name = Gorpeln
        email = gorpeln@xxx.com

处理已经上传的项目

官网文档:Changing author info

修改前:

blog_contributions_001

修改后:

blog_contributions_002

第一步、要得到想改变的作者信息的邮箱地址,打开到如图界面,红框内是想改变的作者信息。 blog_contributions_003 然后在链接结尾处添加.patch blog_contributions_004

第二步、重新clone这个仓库到新目录

git clone --bare https://github.com/user/repo.git
cd repo.git//进入到该目录

第三步、用官方给的脚本修改作者信息

#!/bin/sh
git filter-branch --env-filter '
OLD_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

将上述脚本粘贴到终端回车,修改好信息后将正确的信息push。

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

再去github Profile 刷新看看,就可以显示小绿块啦

PS:可以直接把第一步获取到的邮箱地址直接添加到GitHub个人账户的邮箱中,也可以展示绿格。