GitHub贡献统计

场景

头像和贡献不显示。

分析

因git初始化设定时用户名和邮箱(主要是邮箱)错误,详参GitHub Help。简介中贡献图表是向GitHub仓库贡献记录。贡献时间戳根据协调通用时间(UTC)而非当地时区。仅符合某些标准贡献才被统计。一些情况可能需重建图表以求贡献显示。

贡献统计

  • Issues和pull requests

    • 操作于一年内
    • 操作针对一独立仓库而非fork
  • Commits

    • 提交于一年内
    • 提交用email与GitHub关联
    • 提交在一独立仓库而非fork
    • 提交在仓库默认分支(通常master)或gh-pages分支(Project Pages sites 的仓库)

此外须满足下面条件之一

  • 该仓库协作者或该版本库拥有组织中一员
  • fork过该仓库
  • 对该仓库发起过pull request或issue
  • star过该仓库

贡献未统计常见原因

注意:
当一拉取请求被合并,且提交被压碎(失败),仅合并拉取请求者和发起拉取请求者收到贡献信用。其他对拉取请求贡献者不会收到贡献信用。
当重新提交,该提交原作者和重提交者,无论通过命令行或GitHub,都收到贡献信用。
  • 提交少于24小时
    在做出符合统计作为贡献要求提交后,需等24小时才可看到贡献出现在贡献图表。

  • 没添加本地Git提交邮箱到账户
    提交需一与GitHub关联邮箱以求在贡献图表出现。可在一提交URL末尾添加.patch检查用于提交邮箱,示例

    From 67c0afc1da354d8571f51b6f0af8f2794117fd10 Mon Sep 17 00:00:00 2001
    From: The Octocat <octocat@nowhere.com>
    Date: Sun, 27 Apr 2014 15:36:39 +0530
    Subject: [PATCH] updated index for better welcome message
    

表中邮箱设在本地git配置中。该例提交用邮箱是octocat@nowhere.com
提交用邮箱没关联GitHub须添加邮箱到GitHub账户。添加新邮箱贡献图表自动重建。
普通邮箱如jane@computer.local不能添加到账户。用这样邮箱提交则提交将不与GitHub关联且不显示在贡献图表。

  • 提交不在默认或gh-pages分支
    提交仅在默认分支(通常master)或gh-pages分支(Project Pages sites的仓库)被统计。提交不在默认分支或gh-pages分支且希望它们被统计贡献,需下面之一:

    • 发起一拉取请求,于默认分支或gh-pages分支合并变化
    • 改变仓库默认分支
  • 提交在fork仓库
    提交在fork仓库不统计贡献,需下面之一使统计:

    • 发起一拉取请求,于当前仓库合并变化
    • 与fork仓库解除关联并转变其为GitHub上一独立仓库,联系GitHub官方支持。若fork仓库拥有一些fork本身仓库,使支持了解这些fork仓库随你仓库转新网络环境或留当前网络环境。
  • 提交在拉取请求被合并或压碎(失败)
    提交在拉取请求被合并或被压碎(失败)不统计贡献。只有合并拉取请求者和发起拉取请求者收到贡献信用。其他对拉取请求贡献者不会收到贡献信用。

补充

Publicizing or hiding your private contributions on your profile

Viewing contributions on your profile

排查

git log 查看提交记录邮箱正确与否
git config user.email 查看提交用邮箱是否同GitHub关联邮箱

解决

Changing author info

改变作者信息

改变已存在提交记录中用户名和/或邮箱须重写Git仓库全部历史。

警告
该做法对仓库历史具有破坏性。若你在一仓库与人合作,重写已发布历史是很不友好做法,仅紧急情况这么做。

用脚本改变仓库Git历史

脚本已创建且将通过新用户名和邮箱改变当前在作者或提交者范围持旧邮箱的任何提交。

注意
跑该脚本重写历史针对所有仓库合作者。步骤完成后,任何人具有forks或clones须获取重写历史并把所有本地修改转化进重写历史。

步骤

  1. 目录C:\Users\Administrator下(也可其它目录)。Mac、Linux打开Terminal;Windows打开命令提示符(command prompt)或Git Bash。

  2. 克隆新且裸存储库。

     git clone --bare https://github.com/(用户名)/(仓库名).git
     cd (仓库名).git
    
  3. 创建文本文档(后缀“仓库名.sh”),复制粘贴脚本并修改以下变量为当前信息且复制该文档到临时存储库。

     OLD_EMAIL
     CORRECT_NAME
     CORRECT_EMAIL
    

脚本:

	#!/bin/sh

	git filter-branch --env-filter '
	OLD_EMAIL="your-old-email@example.com"
	CORRECT_NAME="Your Correct Name"
	CORRECT_EMAIL="your-correct-email@example.com"
	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
  1. 打开临时存储库,拖拽刚复进文档到命令窗口,Enter执行脚本。
    出错删除脚本最后一句--tag-name-filter cat -- --branches --tags

  2. git log查看新Git历史有无错误。

  3. 无错误推送正确历史到GitHub

     git push --force --tags origin 'refs/heads/*'
    
  4. 删除临时存储库

     cd ..
     rm -rf repo.git
    
  5. 收尾
    上述步骤完成后需将本地Git全局信息改好避免以后提交出问题。

     git config --global user.email GitHub关联邮箱 
     git config --global user.name GitHub用户名
    

注意:
Xcode直接在Xcode修改Git全局信息,点菜单栏Xcode进入Preferences,将Author Email改为正确Email地址即可。

警告

Xcode

  • 补救只修改GitHub记录未修改本地记录,直接Commit and Push弹出警告:
  • Xcode告知本地版本过时。拉取GitHub仓库,点Pull提示Local repository up to date则本地仓库更新成功。

AndroidStudio

  • 直接Commit and Push弹出提示:
  • 最优做法点Cancel,然后拉取GitHub仓库进行Commit and Push。此时若本地仓库进行过较多修改,点Pull弹出:

    此时点Merge,然后显示预览合并后效果,点Apply,最后Commit and Push即可。

冲突

GitHub与码云关联不同邮箱,对GitHub进行上述操作,在码云提交时出现上述同样场景。如图:

排查

git log 查看提交记录邮箱正确与否
git config user.email 查看提交用邮箱是否同码云关联邮箱

如图。提交记录邮箱和提交用邮箱均不同于码云关联邮箱

解决

Project修改
git config user.name 目标用户名
git config user.email 目标邮箱名
全局修改
git config  --global user.name 全局用户名
git config  --global user.email 全局邮箱名
git配置文件修改
  • vi ~/.gitconfig打开全局.gitconfig文件,在文件中直接修改。

  • 打开当前project中config文件,该文件在每project中.git目录下。进入该目录编辑,没修改过则打开默认无对应用户名和密码。仅修改过会在config中生成对应字段。

建议

若GitHub与码云关联不同邮箱,建议码云或GitHub其一用全局修改方式,另一用Project修改方式。

注意

贡献显示在与提交用邮箱关联码云或GitHub贡献图表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

snpmyn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值