为什么绿格子会丢失

首先要分析为什么你的提交记录没有被github识别:

  • 进行Commits的用户没有被关联到你的Github帐号中。
  • 不是在这个版本库的默认分支进行的Commit。
  • 这个仓库是一个Fork仓库,而不是独立仓库。

我估计很多人和我一样都是第一个原因,初用github远程管理代码或者那些经常更换使用机器的猿极有可能用错账户名和邮箱,其实我就是在修改自己原来的用户名和邮箱时才发现的。

下面是解决的办法:

这是github官方的办法(全英文):https://help.github.com/articles/changing-author-info/

1、在git项目目录下创建一个脚本文件email.sh,内容如下(请按说明修改5,6,7行的内容)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/sh

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

2、创建临时文件夹并clone项目

1
2
3
# 在bash里执行如下代码,user替换成你的github账户名,repo替换成你的repo的名字
git clone https://github.com/user/repo.git
cd repo

3、执行email.sh,windows环境可通过git-bash.exe执行脚本

1
sh email.sh

4、通过git log查看是否已修改完毕

1
2
3
git log
# or
git log --pretty="%h %ce %an ==> %s"

5、同步至远程仓库

1
git push origin --force --all

6、最后把这个临时clone下来的repo目录删掉就行

现在一切大功告成,再去看的你的github首页,丢失的绿格子都回来了。