# GitHub"小绿格"不增加😥

某天突然发现自己提交了代码,但是GitHub首页的小绿格没有增加。

一开始我以为是延迟,或者当天不能看到自己提交的贡献点,等到第二天才会有?😡

查看了一下GitHubCommit记录和本地的配置发现用户名与GitHub不一致会导致不增加贡献。

因为是在公司提交代码,所以在公司配置的默认是是公司的邮箱,而不是自己的邮箱😅

# 寻找原因🎉

找到原因后就好解决了,最简单有两种方法:

  1. 修改全局默认邮箱的用户名和邮箱
git config --global user.name "ordinaryA"
git config --global user.email "353458582@qq.com"
1
2

此处要注意如果使用了global参数,表示你这台机器上所有的Git仓库都会默认使用这个邮箱及用户名,当然你也可以单独给某个仓库指定不同的用户名和Email地址。

  1. 修改单个Git仓库的用户名和邮箱

打开项目所在目录,bash如下指令

cd .git

git config user.name "ordinaryA"

git config user.email "353458582@qq.com"
1
2
3
4
5

然后通过执行命令可以查看config文件检查是否修改成功:

cat config
1

完成上述操作之后,当你再次提交代码时,就能在GitHub上看到你的小绿格了!

# 大功告成💧

完成以上步骤后,虽然提交代码会有绿格了,但是之前提交的怎么找回来呢?

我们只需要修改历史提交记录的提交用户名和邮箱就能够正确显示了😀

首先在项目根目录下创建 email.sh ,然后写入如下代码:

#!/bin/sh

git filter-branch --env-filter '

OLD_EMAIL="alan9999@163.com"
CORRECT_NAME="ordinaryA"
CORRECT_EMAIL="353458582@qq.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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

OLD_EMAIL改成旧邮箱,查看旧邮箱可以通过git log或在GitHub上查看提交记录 CORRECT_NAMECORRECT_EMAIL改成自己GitHub上的邮箱以及用户名即可

接下来执行一下脚本

./email.sh
1

执行完成之后使用git log可以看到邮箱已经修改成功

本地修改后,需要推送到GitHub

bash如下指令

git push origin --force --all
1

这时候打开GitHub你就会发现小绿格神奇的恢复了😄

最后更新: 11/5/2019, 10:51:00 AM