今天突然发现自己好多次的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
修改前:
修改后:
第一步、要得到想改变的作者信息的邮箱地址,打开到如图界面,红框内是想改变的作者信息。 然后在链接结尾处添加.patch
第二步、重新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个人账户的邮箱中,也可以展示绿格。