【git】提交到github不显示贡献小绿点问题的解决

本文转载自:https://www.cnblogs.com/zzhangyuhang/p/9896151.html

问题描述:

  最近一直在用github来写博客,可是今天发现github上的contributions记录并无个人提交记录.html

  通过一番百度和自行捣鼓发现了问题所在.git

缘由:github

  最近实习,公司给配电脑.原来没有git,是用homebrew安装的,github上的仓库也是用新电脑来建立的,以及后续博客的提交也是.spa

  由于是mac并无进行本地的任何配置,就直接用终端把本地文件push到仓库中去了.3d

  缘由也就在这里.htm

  由于你本地的git默认的user.name和user.email并非你的,而是本机.因此在此期间你的commit都是默认本机的.blog

  你能够用git config user.name / git config user.email 来查看本身的git所属homebrew

  查不出的结果应该是为空,由于你根本就没设置过.开发

  而后用git log查看一下commit记录.你会惊奇的发现虽然在往你的github仓库中push,可是用户名和邮箱却不是你github的,而是系统默认的pc用户.博客

  因此github贡献统计的根本就不是你的帐户,就没有贡献小绿点咯.

解决办法:

  1.若是你只是想之后的commit记录,你只须要把当前本地git的user.name和user.email配置一下便可.

        $ git config --global user.name “github’s Name”
        $ git config --global user.email "github@xx.com"

   这里只是在git config 后边添加上了你要更改的内容便可,--global参数指的是全局,也就是你本地的全部仓库,若是不加就是单个仓库.

   修改好后,你之后的commit就是你的帐户了,就能被统计贡献小绿点了.

  2.若是你不想浪费以前的commit贡献,须要把全部你用默认帐户的commit都归为你真正的名下怎么办.

  咱们须要修改全部的commit和push历史

 git filter-branch -f --env-filter '
if [ "$GIT_AUTHOR_NAME" = "oldName" ]
then
export GIT_AUTHOR_NAME="newName"
export GIT_AUTHOR_EMAIL="newEmail"
fi
' HEAD
 
git filter-branch -f --env-filter '
if [ "$GIT_COMMITTER_NAME" = "oldName" ]
then
export GIT_COMMITTER_NAME="newName"
export GIT_COMMITTER_EMAIL="newEmail"
fi
' HEAD

   这里的oldName咱们能够经过git log来查看,其实这里只要修改GIT_COMMITTER就能够了.

  AUTHOR记录的是此次修改的做者信息,COMMITTER是此次提交的用户信息.

  注意二者区别,

    若是你本身写本身提交,那么二者都是你.

    有的项目有的人并无commit权限,因此他须要修改完以后交给有权限的人提交,这样你是AUTHOR并非COMMITTER 

   若是修改为功提示:Ref 'refs/heads/master' was rewritten.

   若是修改失败提示:Ref 'refs/heads/master' is unchanged.这里多是由于你填写的oldName并无找到.

   若是无差异把全部都改的话去掉if..fi

git filter-branch -f --env-filter "
GIT_AUTHOR_NAME='newName';
GIT_AUTHOR_EMAIL='newEmail';
GIT_COMMITTER_NAME='newName';
GIT_COMMITTER_EMAIL='newEmail'
" HEAD

  这样就所有改过来了.

注意:

  你这里将你本地git的帐户和邮箱从新设置了,可是github并无那么智能就能判断你是原来你系统默认的用户.

  也就是说你新配置的用户和你默认的被github识别成两个用户.

  这样你之后操做的时候commit 或者 push的时候有可能产生冲突.

  解决方法是

  1.使用强制push的方法:

   $ git push -u origin master -f
  这样会使远程修改丢失,通常是不可取的,尤为是多人协做开发的时候。

  我这里只是本身写的博客,因此就直切所有强制覆盖掉了.

  2.push前先将远程repository修改pull下来

  git pull origin master
  git push -u origin master

  3.若不想merge远程和本地修改,能够先建立新的分支:

  git branch [name]
  而后push

  git push -u origin [name]

效果图: 

在使用默认的git用户修改的显示是这样的,nice是个人pc用户名

修改以后,

修改完以后刷新,个人贡献小绿点所有出来了.(小绿点是以帐户邮箱为单位记录的,若是有多个邮箱,能够在信息里的email添加新邮箱就完事ok)

最后叮嘱:

  当咱们换电脑使用git的时候,记得修改 git config user.name/user.email就不会出现这样的问题了.

相关文章
相关标签/搜索