解决Github的Contribution没有增加的问题
解决Github的Contribution没有增加的问题
最近在看自己的Github时,偶然间发现,自己的许多Conmmit都没有计算在Contribution内,然后看自己库中的Commit记录时,发现没有被记录在Contribution Graph中的Commit并不显示自己的头像,同时显示的用户名和自己创建Github账号时填的用户名也不一样。于是在网上找了一些资料,其中Github官方给出了一个官方文件,告诉我们什么样的Commit可以被记入Contribution,请点击此处查看。
在官方的帮助文档中,有一条是Commit被记入Contribution中必须满足用于Commit的邮件地址必须与Github账户相关联。其实,这也是为什么我的Commit没有被记入Contribution和不显示头像的原因,也是大多数人也是这个原因。
原因就是,当我们在电脑中下载了Git客户端后,我们会用本地git命令行配置一个用户名和邮箱地址,这个用户名和邮箱地址只有与创建Github时的邮箱和地址相同时,每次往Github上commit时,Github就会识别出commit的就是你本人,此时这次commit才会被记入Contribution。好了知道原因了,我们来具体看一下,如何操作:
首先,你需要知道,在你安装git客户端时,你配置的用户名和邮箱地址是什么,用下面的命令,可以显示出每次commit时的日志:1
git commit log
在日志上可以看到每次commit时,你是用的用户名和邮箱地址,如果与Github上的不一致,那么问题就在于此了。
下面我们要把commit时的用户名和邮箱地址改为与Github注册时的一致,我们可以通过下面的命令:
1 | git config --global user.name <your username for Github> |
修改后,你以后再向Github提交代码时,就会看到commit被记入Contribution了。
同时,我们有一种补救方法,可以将以前与没有被记入Contribution的commits关联的邮箱修改为新的邮箱,那么,以前没有记入Contribution的commits,也会重新被记入Contribution。具体步骤如下:
将要修改的repo克隆到本地
1
git clone --bare <the repo address>
将命令行的当前目录切换到新克隆的库下
1
cd <the repo path>
根据你的信息修改以下变量,复制粘贴回车
1
2
3
4
5
6
7
8
9
10
11
12
13
14git filter-branch --env-filter '
OLD_EMAIL=<旧邮箱地址>
CORRECT_NAME=<正确用户名>
CORRECT_EMAIL=<正确邮箱地址>
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用
git log
查看用户名和邮箱地址有没有改过来把正确历史push到Github上
1
git push --force --tags origin 'refs/heads/*'