一、提出问题

代码可以成功 push 到 github 指定仓库,

但却没有 contributions 贡献值记录(小绿点)。

二、分析问题

参考文档:GitHub官网:为什么我的贡献没有出现在我的个人资料上?来了解贡献图表中可能缺少贡献的常见原因。

  • 用于提交的电子邮件地址与您在GitHub上的帐户相关联。
  • 提交是在独立的存储库中进行的,而不是在fork中。
  • 这些提交是:
    • 在存储库的默认分支中
    • 在gh-pages分支中(对于带有项目站点的存储库)

Contributions未被Github计入的几个常见原因

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

三、解决问题

1.排除电子邮箱问题

查看 GitHub 账号英文名称是否正确。

到 GitHub 个人设置(Settings)中查看邮箱(Emails)是否正确。

在本地 git 命令窗口执行下方语句查看对应信息是否正确:

1
2
# 查看git用户名
git config user.name
1
2
# 查看git用户邮箱
git config user.email

一般是因为这个原因,仔细找一下!留意空格或者中划线、大小写字母等问题

如果找到问题,执行下方语句重新设置本地 git 信息使之与 GitHub 保持一致:

1
2
# 重置git用户名
git config --global user.name '你的用户名'
1
2
# 重置git用户邮箱
git config --global user.email '你的邮箱地址'

重新 git push 推送,试一下是否显示小绿点。

如果可以了,那恭喜你,可以关闭此文章了。


但我的TM还是不行啊啊啊啊啊啊啊,不管在百度、必应还是各种社区上搜索相关答案,全都是清一色上方那种解决方式,全都是发现了本地git邮箱不对。但我的明明是对着呢为啥不可以!!!远程仓库更换到gitee以前也不是没有往github上push过,为啥以前可以现在不可以嘞!狗日的github屁事真多!(气死了这两天光找这个的解决办法了…

2.排除储存库的分支问题

经过多次排查,若确定本地git邮箱和github上的邮箱没问题,但仍然push后没有提交记录。

那我们接下来尝试是否是因为push的远程仓库不是默认分支的原因。因为我的该项目确实是提交在自己建的分支上的,而不是默认的main分支。(但TM以前为啥可以?为啥人家gitee可以?就你TM破github屁事多!

  1. 打开github储存库的设置(Settings),查看分支(Branches)中的默认分支(Default branch)。

    The default branch is considered the “base” branch in your repository, against which all pull requests and code commits are automatically made, unless you specify a different branch.
    默认分支被视为存储库中的”基本”分支,除非您指定了其他分支,否则将自动针对该分支发出所有拉取请求和代码提交

  2. 可以看到默认是main,现在点击后面的切换按钮,选择我们需要的分支,点击更新(Update)。

    Changing your default branch can have unintended consequences that can affect new pull requests and clones.
    更改默认分支可能会产生意想不到的后果,从而影响新的拉取请求和克隆。

  3. 点击“我明白,更新默认分支”,确定更换新分支为默认分支。

现在成功出现小绿点了,OHHHHHHHHHHHHHHHHHHH!!!!

但是,在我重新push的时候,报错了:

1
2
3
4
5
6
$ git push
Connection reset by XX.XXX.XXX.XXX port 22
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

谷歌了一下,发现是SSH出问题了,导致的连接不上服务器…怎么那么多事啊…淦

正准备手动删除.ssh想要重新生成,转念一想不会是防火墙的原因吧。所以重连了一下外网,push成功。


四、回顾问题

虽然折腾了两天,终于出现了小绿豆,但我还是不明白为什么。

就把仓库中使用中的分支设置成默认分支就好啦?就这???

github contributions的原理不是对比本地git邮箱账号和github邮箱账号吗?

于是我又返回上面的GitHub官方文档:为什么我的贡献没有出现在我的个人资料上?

看到“贡献不被计算在内的常见原因”中写到:

提交只能是在默认分支 (通常master)或者gh-pages分支被统计。如果你想在非默认分支中,希望他们能计入您的贡献,需要执行以下任一操作:

  1. 打开一个要更改合并到默认分支中的 pull 请求。
  2. 更改库中的默认分支。更改存库中的默认分支将更改它的所有库中的合作者。只能这样做,如果你想要新分支成为所有未来的请求和提交所针对的基础。

Emm…好吧


  • 在当初查找解决办法的时候,问了一下提莫,他觉得是我没弄GPG签名的原因。但是半年前我用github从来没设置过GPG签名,也可以记录提交啊(github会自动代签)。所以贡献值应该和弄没弄私人GPG关系不大。

  • 在我更换了默认分支后,github的依赖机器人(Dependabot)就立即检查了我项目中的依赖问题,向我发送了邮件,并在仓库里新建了几个Pull requests(也就是PR),请求合并新的依赖。并且该仓库的分支除了main和现在的默认分支hexo,还多了好几个以dependabot/npm_and_yarn/xxxx为形式命名待合并的分支。

    • 那么之前怎么不检查?提莫说只检查master或者main(应该是只检查默认分支),所以我一将正在使用的这个分支切换为默认分支,机器人就自动开始了检查。
    • 由于我没操作过PR请求,面对仓库Pull requests里按钮不知所措。这几个机器人提交的PR和仓库分支先就这样吧,我先不管了,以免点错啥按钮,导致进行什么我不了解的操作,造成对我来说难以挽救的后果…(我是真的不会用github啊……
  • 提莫建议我弄个GPG数字签名,我目前用不到,先不弄了…改天了解一下再说,它和SSH我有点搞混,因为它俩都有公钥/私钥,都是用来验证的东西。

  • 提莫还建议开启github action,可以自动test push或者 PR 并入的文件,很方便。我…有空再说,有空再说…(苦笑


【感谢内容】: