博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【git】提交到github不显示贡献小绿点问题的解决
阅读量:5306 次
发布时间:2019-06-14

本文共 2350 字,大约阅读时间需要 7 分钟。

问题描述:

  最近一直在用github来写博客,但是今天发现github上的contributions记录并没有我的提交记录.

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

原因:

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

  因为是mac并没有进行本地的任何配置,就直接用终端把本地文件push到仓库中去了.

  原因也就在这里.

  因为你本地的git默认的user.name和user.email并不是你的,而是本机.所以在此期间你的commit都是默认本机的.

  你可以用git config user.name / git config user.email 来查看自己的git所属

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

  然后用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" ]thenexport GIT_AUTHOR_NAME="newName"export GIT_AUTHOR_EMAIL="newEmail"fi' HEADgit filter-branch -f --env-filter 'if [ "$GIT_COMMITTER_NAME" = "oldName" ]thenexport 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就不会出现这样的问题了.

 

转载于:https://www.cnblogs.com/zzhangyuhang/p/9896151.html

你可能感兴趣的文章
团队作业
查看>>
数据持久化时的小bug
查看>>
mysql中key 、primary key 、unique key 与index区别
查看>>
bzoj2257
查看>>
Linux查看文件编码格式及文件编码转换<转>
查看>>
Leetcode: Find Leaves of Binary Tree
查看>>
Vue 模板解释
查看>>
http://www.bootcss.com/
查看>>
20145308 《网络对抗》 注入shellcode+Return-to-libc攻击 学习总结
查看>>
将多张图片和文字合成一张图片
查看>>
自己动手写ORM(01):解析表达式树生成Sql碎片
查看>>
如何使用USBWebserver在本机快速建立网站测试环境
查看>>
百度Ueditor编辑器的Html模式自动替换样式的解决方法
查看>>
变量提升
查看>>
线性表可用顺序表或链表存储的优缺点
查看>>
在现有的mysql主从基础上,搭建mycat实现数据的读写分离
查看>>
[Flex] flex手机项目如何限制横竖屏?只允许横屏?
查看>>
tensorflow的graph和session
查看>>
JavaScript动画打开半透明提示层
查看>>
Mybatis生成resulteMap时的注意事项
查看>>