Git 本地提交代码推送远程并未统计贡献量问题分析
1-问题呈现
对于使用 Git 进行代码版本控制,开发者都会有一个心态,就是自己贡献的代码能够在远程仓库中被统计出,也就是我们常见的在 Gitee、GitHub、Gitlab 上所看到的那个贡献量标记统计。
但是,在进行使用过程中,发现本地提交代码推送远程并未统计进去,也就是远程站点并实时体现贡献量。对于努力付出的人,没有得到一定的回报,是相当郁闷的。
本地提交代码图片示例如下:
远程仓库 GitHub 贡献量统计图片示例:
从结果来看,并未将更新的代码贡献量统计进去。
2-思考分析
正在困惑之时,试着尝试直接从远程仓库更新代码,看看有没有贡献量的统计,为了区分,这里使用了 Gitee 码云作为远程仓库直接操作站点。
在 Gitee 站点直接修改文件内容,而后提交,贡献量统计结果如下:
从结果来看,更新的代码已经统计进贡献量里了。这就奇怪了,为什么本地推送远程无法统计,而远程站点直接操作,就可以统计。
正在思考分析之时,突然想到了,之前的时候,更改了远程仓库站点 Gitee、Github 的主邮箱,而没有更新本地的密钥 SSH,也就是以新的邮箱地址生成的密钥 SSH 绑定到远程仓库上,所以,就没有统计出来。
远程仓库绑定邮箱为:
再查看本地 SSH 密钥内容,如下:
查看 id_rsa.pub 文件内容,发现邮箱确实与远程绑定不同。找到问题的原因,接下来就比较好解决了。只需要重新在本地生成一个以新邮件地址为主的密钥 SSH 即可。
如何生成密钥 SSH,就不在这里赘述了,可以直接网上查找内容即可。
生成新 SSH 结果如下:
将新生成密钥 SSH 配置到 Gitee 和 GitHub 远程仓库 SSH 即可,结果如下:
3-验证分析
为了验证分析是否正确,接着在本地更新代码提交并推送远程,查看是否能够进行贡献量统计。代码更新提交并推送远程,截图如下:
查看远程 GitHub 仓库,结果却是出乎意料,结果如下:
4-重新思考分析
经过以上步骤验证分析之后,说明并未找到问题的根本原因。重新想了,是否是全局邮箱和用户设置的问题,通过以下指令查看信息:
查看结果如下:
这就说明了还需要重新设置本地的全局用户和邮箱变量,更新结果如下:
5-重新验证分析
以上配置重新设置好后,重新进行代码提交并推送远程,截图如下:
再查看 GitHub 远程仓库,是否具有代码贡献量,截图如下:
从结果来看,实现了贡献量的统计,解决了问题。
6-归纳总结
对于这个问题,有以下两点思考:
第一,贡献量的统计是以账号为单元展开的
从工作量统计而言,也应该是以账号为单位,而不是以一个密钥作为统计单位。最开始为彻底解决问题,便是在这个环节思考出了问题。密钥 SSH,只是一把钥匙,但是,这把钥匙到底是谁在用,还是需要说明的。
第二,实际工作中应该做好工作量统计
在真实的工作环境下,一定要做好自己的工作量统计,这不仅关乎自己的努力付出得到肯定,还避免被他人误会。没有工作量统计,领导和同事怎么知道你做了什么、有什么绩效,怎么知道你到底对于整个项目做了什么贡献。
因此,不要小看这个细节,有时候,很多细节决定了成败。
第三,解决问题就是不断假设不断验证的过程
对于问题的解决,实际上,我们有时候很难一步到位,很难马上就可以解决问题。真实的场景下,影响因素很多,需要考虑的要点很多,所以,不断假设不断验证,才是解决问题的正确步骤。
版权声明: 本文为 InfoQ 作者【andy】的原创文章。
原文链接:【http://xie.infoq.cn/article/eba07da8418f7826d97489f66】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论