为什么你的 Contributions 没有在你的 Profile 里显示?

那么问题来了,什么是Contributions呢,Github官网上有这么一句话:

Your profile contributions graph is a record of contributions you've made to GitHub repositories. Contributions are only counted if they meet certain criteria. In some cases, we may need to rebuild your graph in order for contributions to appear.

你的个人简介中的贡献图记录的是你给Github上的仓库的贡献。它仅仅只记录某些符合标准的commits。在某些情况下,我们需要重新建立你的贡献图以便让所有的贡献都显示出来。

什么样的贡献才会被Github统计?

英语好的同学请移步 Why are my contributions not showing up on my profile?

Issues 和 pull requests

  • 这个操作是在一年之内

  • 这个操作是针对一个独立的仓库,不能是fork

Commits

当你的commits满足以下条件时,它才会被展示出来:

  • 一年之内提交的commits

  • commits使用的email地址是与你的Github账号相关联的

  • 这些commits是在一个独立的仓库而不是fork仓库

  • 这些commits是在:

    • 在默认分支上(通常是master

    • gh-pages分支(包含 Project Pages sites 的仓库)

此外,至少满足下面条件中的一个(主要针对你Commit的仓库不是你创建的):

  • 你是这个仓库的协作者,或者是这个版本库的拥有组织中的一员

  • 你fork过这个仓库

  • 你对这个仓库发起过pull request或者issue

  • 你对这个仓库标记了Star

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

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

  • 进行Commits的用户没有被关联到你的Github帐号中。

  • 不是在这个版本库的默认分支进行的Commit。

  • 这个仓库是一个Fork仓库,而不是独立仓库。

如何排查

你可以在你的本地repo里用git log命令查看commit记录上的个人邮箱是否正确,像我就是因为之前切换到Mac平台开发之后用户名没有配置,所以我之后的commit记录上的邮箱一直是Leo@Leo-MacBook-Pro.local,所以Github就会认为这些commits都不是你提交的!

补救措施

然而这也并不是没有补救办法的,Github官网上就有给出详细的补救过程,英语好的同学请自行移步 Changing author info,下面是我翻译自Github Help的简要步骤:

变更作者信息

为改变已经存在的 commits 的用户名和/或邮箱地址,你必须重写你 Git repo 的整个历史。

警告: 这种行为对你的 repo 的历史具有破坏性。如果你的 repo 是与他人协同工作的,重写已发布的历史是一种不好的习惯。仅限紧急情况执行该操作。

使用脚本改变你 repo 的 Git 历史我们写了一段能把 commit 作者旧的邮箱地址修改为正确用户名和邮箱的脚本。

使用脚本来改变某个repo的Git历史

我们已经创建了一个脚本,使用正确的姓名和电子邮件地址提交后,你以前提交的所有的commits中的作者信息及提交者字段中的旧的用户名和邮箱地址都将被更正

注意: 执行这段脚本会重写 repo 所有协作者的历史。完成以下操作后,任何 fork 或 clone 的人必须获取重写后的历史并把所有本地修改 rebase 入重写后的历史中。

在执行这段脚本前,你需要准备的信息:

  1. Mac、Linux下打开Terminal,Windows下打开命令提示符(command prompt)

  2. 给你的repo创建一个全新的clone
    git clone --bare https://github.com/user/repo.git
    cd repo.git

  3. 复制粘贴脚本,并根据你的信息修改以下变量:旧的Email地址正确的用户名正确的邮件地址

    #!/bin/sh
    git filter-branch --env-filter '
    OLD_EMAIL="旧的Email地址"
    CORRECT_NAME="正确的用户名"
    CORRECT_EMAIL="正确的邮件地址"
    if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
    thenexport GIT_COMMITTER_NAME="$CORRECT_NAME"export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    fi
    if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
    thenexport GIT_AUTHOR_NAME="$CORRECT_NAME"export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
    fi
    ' --tag-name-filter cat -- --branches --tags
  4. 按 Enter键 执行脚本。

  5. git log命令看看新 Git 历史有没有错误

  6. 把正确历史 push 到 Github

    git push --force --tags origin 'refs/heads/*'
  7. 删掉刚刚临时创建的 clone

    cd ..
    rm -rf repo.git

如何正确设置你的 git 个人信息

接下来全局设置好你的正确信息,以后就放心的用Github进行版本管理吧 ^_^

git config --global user.email "你的邮件地址"
git config --global user.name "你的Github用户名"

原文链接:http://xunli.xyz/2016/01/09/github-not-count/

Github没有记录Contributions的原因及解决方案相关推荐

  1. Git, GitHub使用记录

    高亮颜色说明:突出重点 个人觉得,:待核准个人观点是否有误 高亮颜色超链接 文章目录 速查 官方文档 GitHub Cheat Sheet 安装 配置工具 创建仓库 .gitignore 文件 分支 ...

  2. Intel Realsense D435 摄像头插入电脑无法监测(识别)的可能原因及解决方案 USB SCP overflow

    Intel Realsense D435 摄像头插入电脑无法监测(识别)的可能原因及解决方案 问题描述: 查找解决方案: 1. 是否是shell hardware detection 服务未开启? 2 ...

  3. javaheapspace解决方案_高手总结的9种 OOM 常见原因及解决方案

    当 JVM 内存严重不足时,就会抛出 java.lang.OutOfMemoryError 错误.本文总结了常见的 OOM 原因及其解决方法,如下图所示.如有遗漏或错误,欢迎补充指正. 1.Java ...

  4. mysql选错索引怎么解决_MySQL选错索引的原因以及解决方案

    MySQL 中,可以为某张表指定多个索引,但在语句具体执行时,选用哪个索引是由 MySQL 中执行器确定的.那么执行器选择索引的原则是什么,以及会不会出现选错索引的情况呢? 先看这样一个例子: 创建表 ...

  5. python find函数_Python 装饰器填坑指南 | 最常见的报错信息、原因和解决方案

    本文为霍格沃兹测试学院学员学习笔记,进阶学习文末加群. Python 装饰器简介 装饰器(Decorator)是 Python 非常实用的一个语法糖功能.装饰器本质是一种返回值也是函数的函数,可以称之 ...

  6. update语句执行卡死现象原因及解决方案

    原因分析: 可能在PLSQL Developer执行update时没有commit,oracle将该条记录锁住了. 解决方案: --查询锁定记录 SELECT s.sid,s.serial# FROM ...

  7. Threadlocal学习及内存泄漏原因和解决方案

    因为 ThreadLocal 是基于 ThreadLocalMap 实现的,其中 ThreadLocalMap 的 Entry 继承了 WeakReference ,而 Entry 对象中的 key ...

  8. mysql中幻读出现的原因及解决方案

    今天分享 mysql中幻读出现的原因及解决方案: 一.首先明确什么是幻读:​  事务A按照一定条件进行数据读取,期间事务B插入了相同搜索条件的新数据,事务A再次按照原先条件进行读取操作修改时,发现了事 ...

  9. IE浏览器不能上网原因及解决方案

    近几天,IE浏览器竟然上不去网了,但是网络连接没问题,其他浏览器都能浏览网页,QQ.人人等都能连网,只有IE浏览器以及基于IE内核的程序无法运行.先总结原因和解决方案如下: 一.网络设置的问题 这种原 ...

最新文章

  1. Switcher ---Vista Areo 工具
  2. 【Go语言】【4】GO语言类型和为类型增加方法
  3. 修改LDAP查询默认1000条限制
  4. 【算法竞赛学习】数字中国创新大赛智慧海洋建设-Task1地理数据分析常用工具
  5. 父类调用子类中的方法
  6. GPS 校验和 代码_Linux recovery 移除签名校验
  7. flutter bloc_如何使用BLoC模式处理Flutter中的状态
  8. ajax 传送很多html字符串到前台例子
  9. talemu---蒙特卡洛仿真软件产品介绍
  10. SEO网站优化步骤超详细完整版教程
  11. 您的组织策略阻止我们为您完成此操作
  12. MCS51 程序存储器(ROM)
  13. 宏基因组分析步骤Linux,宏基因组--简单流程(代码)
  14. 网页聊天室的开发笔记
  15. python删除文本末尾所有空行
  16. 聊聊心理学专业去用户体验研究方向的求职
  17. 什么样的导航源码适合seo做收录的
  18. pwn-进阶-forgot
  19. cad 打开硬件加速卡_CAD打开后部分图形丢失该如何恢复?
  20. UI设计新趋势:渐变色设计重新回归主流

热门文章

  1. 面试题--cpu高解决方案以及火焰图学习
  2. SXS: Unable to resolve storage root for assembly directory vs2010
  3. 大学写作期中作业--霸天黄小o
  4. 亚马逊SP-API对接实践解析(amazon selling partner api)
  5. Python——检查 JSON 字符串格式错误的位置
  6. 基于开源网易云API+Flutter写的一款音乐播放器(二)
  7. C#窗体将DGV控件中数据导入导出Excel表
  8. Go语言自学系列 | golang递归
  9. 【STM32F429】第8章 ThreadX NetXDUO之TCP服务器
  10. 从扎克伯格的中国之行说起