【Git】本地提交代码到GitHub上不显示贡献度的问题
一、提出问题
代码可以成功 push 到 github 指定仓库,
但却没有 contributions 贡献值记录(小绿点)。
二、分析问题
参考文档:GitHub官网:为什么我的贡献没有出现在我的个人资料上?来了解贡献图表中可能缺少贡献的常见原因。
- 用于提交的电子邮件地址与您在GitHub上的帐户相关联。
- 提交是在独立的存储库中进行的,而不是在fork中。
- 这些提交是:
- 在存储库的默认分支中
- 在gh-pages分支中(对于带有项目站点的存储库)
Contributions未被Github计入的几个常见原因
- 进行Commits的用户没有被关联到你的Github帐号中。
- 不是在这个版本库的默认分支进行的Commit。
- 这个仓库是一个Fork仓库,而不是独立仓库。
三、解决问题
1.排除电子邮箱问题
查看 GitHub 账号英文名称是否正确。
到 GitHub 个人设置(Settings)中查看邮箱(Emails)是否正确。
在本地 git 命令窗口执行下方语句查看对应信息是否正确:
1 | # 查看git用户名 |
1 | # 查看git用户邮箱 |
一般是因为这个原因,仔细找一下!留意空格或者中划线、大小写字母等问题
如果找到问题,执行下方语句重新设置本地 git 信息使之与 GitHub 保持一致:
1 | # 重置git用户名 |
1 | # 重置git用户邮箱 |
重新 git push 推送,试一下是否显示小绿点。
如果可以了,那恭喜你,可以关闭此文章了。
但我的TM还是不行啊啊啊啊啊啊啊,不管在百度、必应还是各种社区上搜索相关答案,全都是清一色上方那种解决方式,全都是发现了本地git邮箱不对。但我的明明是对着呢为啥不可以!!!远程仓库更换到gitee以前也不是没有往github上push过,为啥以前可以现在不可以嘞!狗日的github屁事真多!(气死了这两天光找这个的解决办法了…
2.排除储存库的分支问题
经过多次排查,若确定本地git邮箱和github上的邮箱没问题,但仍然push后没有提交记录。
那我们接下来尝试是否是因为push的远程仓库不是默认分支的原因。因为我的该项目确实是提交在自己建的分支上的,而不是默认的main分支。(但TM以前为啥可以?为啥人家gitee可以?就你TM破github屁事多!
- 打开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.
默认分支被视为存储库中的”基本”分支,除非您指定了其他分支,否则将自动针对该分支发出所有拉取请求和代码提交 - 可以看到默认是
main
,现在点击后面的切换按钮,选择我们需要的分支,点击更新(Update)。Changing your default branch can have unintended consequences that can affect new pull requests and clones.
更改默认分支可能会产生意想不到的后果,从而影响新的拉取请求和克隆。 - 点击“我明白,更新默认分支”,确定更换新分支为默认分支。
现在成功出现小绿点了,OHHHHHHHHHHHHHHHHHHH!!!!
但是,在我重新push的时候,报错了:
1 | $ git push |
谷歌了一下,发现是SSH出问题了,导致的连接不上服务器…怎么那么多事啊…淦
正准备手动删除.ssh想要重新生成,转念一想不会是防火墙的原因吧。所以重连了一下外网,push成功。
四、回顾问题
虽然折腾了两天,终于出现了小绿豆,但我还是不明白为什么。
就把仓库中使用中的分支设置成默认分支就好啦?就这???
github contributions的原理不是对比本地git邮箱账号和github邮箱账号吗?
于是我又返回上面的GitHub官方文档:为什么我的贡献没有出现在我的个人资料上?
看到“贡献不被计算在内的常见原因”中写到:
提交只能是在默认分支 (通常master)或者
gh-pages
分支被统计。如果你想在非默认分支中,希望他们能计入您的贡献,需要执行以下任一操作:
- 打开一个要更改合并到默认分支中的 pull 请求。
- 更改库中的默认分支。更改存库中的默认分支将更改它的所有库中的合作者。只能这样做,如果你想要新分支成为所有未来的请求和提交所针对的基础。
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 并入的文件,很方便。我…有空再说,有空再说…(苦笑
【感谢内容】:
- CSDN - Github计算contributions
- 官方文档 - 为什么我的贡献没有出现在我的个人资料上?