解决Github的Contribution没有增加的问题

羊冠玉
2023-12-01

最近在看自己的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时的日志:

git commit log

在日志上可以看到每次commit时,你是用的用户名和邮箱地址,如果与Github上的不一致,那么问题就在于此了。

下面我们要把commit时的用户名和邮箱地址改为与Github注册时的一致,我们可以通过下面的命令:

git config --global user.name <your username for Github>
git config --global user.email <your email address for Github>

修改后,你以后再向Github提交代码时,就会看到commit被记入Contribution了。

同时,我们有一种补救方法,可以将以前与没有被记入Contribution的commits关联的邮箱修改为新的邮箱,那么,以前没有记入Contribution的commits,也会重新被记入Contribution。具体步骤如下:

1. 将要修改的repo克隆到本地

git clone --bare <the repo address>

2. 将命令行的当前目录切换到新克隆的库下

cd <the repo path>

3. 复制粘贴下面的脚本,并根据你的信息修改以下变量

#!/bin/bash
git 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

4. 用git log查看用户名和邮箱地址有没有改过来

5. 把正确历史push到Github上

6. 删掉刚刚克隆的repo

 类似资料: