问题描述:

  最近一直在用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配置一下即可.

  1. $ git config --global user.name githubs Name
  2.  
  3. $ git config --global user.email "github@xx.com"

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

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

  2.如果你不想浪费之前的commit贡献,需要把所有你用默认账户的commit都归为你真正的名下怎么办.

  我们需要修改所有的commit和push历史

  1. git filter-branch -f --env-filter '
  2. if [ "$GIT_AUTHOR_NAME" = "oldName" ]
  3. then
  4. export GIT_AUTHOR_NAME="newName"
  5. export GIT_AUTHOR_EMAIL="newEmail"
  6. fi
  7. ' HEAD
  8.  
  9. git filter-branch -f --env-filter '
  10. if [ "$GIT_COMMITTER_NAME" = "oldName" ]
  11. then
  12. export GIT_COMMITTER_NAME="newName"
  13. export GIT_COMMITTER_EMAIL="newEmail"
  14. fi
  15. ' 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

  1. git filter-branch -f --env-filter "
  2. GIT_AUTHOR_NAME='newName';
  3. GIT_AUTHOR_EMAIL='newEmail';
  4. GIT_COMMITTER_NAME='newName';
  5. GIT_COMMITTER_EMAIL='newEmail'
  6. " 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就不会出现这样的问题了.

【git】提交到github不显示贡献小绿点问题的解决的更多相关文章

  1. 使用git提交到github,每次都要输入用户名和密码的解决方法

    使用git提交文件到github,每次都要输入用户名和密码,操作起来很麻烦,以下方法可解决,记录以下. 原因:在clone 项目的时候,使用了 https方式,而不是ssh方式. 默认clone 方式 ...

  2. git提交后文件夹显示灰色无法打开的解决办法

    上传完本地文件到gitee线上后发现如下情况,文件夹显示为灰色并且无法访问. xxx@xxx 的灰色文件 问题原因 : 无法点击的灰色文件夹中含有 .git 文件 即在本地初始化的仓库(使用 git ...

  3. git 提交到github时不用每次都输入用户名,密码

    Permanently authenticating with Git repositories, Run following command to enable credential caching ...

  4. 使用git命令提交远程github仓库的时候提示"rejected"(拒绝)解决办法

    今天使用在自己笔记本本地磁盘上使用Git命令行执行"git push"然后输入github的用户名和密码之后,报如下错误: ![rejected] master->maste ...

  5. Git提交到github上

    1.本地创建一个目录redis [guosong@etch171 mars171 redis]# pwd /data1/guosong/code/redis [guosong@etch171 mars ...

  6. 本地项目文件通过git提交到GitHub上

    参考:https://blog.csdn.net/kongying19910218/article/details/50515834 步骤: 1.初始化git,假如我们要提交test文件夹下的所有目录 ...

  7. putty完全使用手册--多窗口---git提交---连接数据库--自动日志显示

    01 putty dev 192.168.3.38 02 cd /home/gongfu/tripb/cranedev02.1 git status git add git commit git pu ...

  8. github提交代码contributions不显示小绿块

    问题描述: 最近发现一个问题就是不管是提交新增的代码还是修改后提交的代码在github的contributions上都不显示贡献小绿块. 于是我在 github help 里面找到了答案: 官方链接如 ...

  9. 使用git提交代码到github,每次都要输入用户名和密码的解决方法

    自从使用git提交代码到github后,发现自己使用git的功力增长了不少,但也遇到不少问题.比如,使用git提交代码到github的时候,经常要求输入用户名和密码,类似这种: 网上有这么一种解决方法 ...

随机推荐

  1. Delphi中那些容易混淆的基础(@、^、Addr、Pointer,Move、CopyMemory,GetMem和FreeMem、GetMemory和FreeMemory、New和Dispose、StrAlloc和StrDispose、AllocMem)

    @.^.Addr.Pointer Delphi(Pascal)中有几个特殊的符号,如@.^等,弄清楚这些符号的运行,首先要明白Delphi指针的一些基础知识:指针,是一个无符号整数(unsigned ...

  2. python-pdf添加水印

    0.用到两个扩展模块:ReportLab.PyPDF2. 1.创建水印PDF. 1).创建文字水印pdf文件 代码: #encoding=utf-8 #author: walker #date: 20 ...

  3. [svc]ip地址划分

    网络界有2个计算题,一个是子网掩码,另一个就是三次握手,四次回收序列号计算了. 学会如何划分等长子网 学会如何合并网段 学会ip是否能分配 理解特殊的ip地址 ip头部 ip地址分类 现在的IP网络使 ...

  4. Python 在字符串中处理html 和xml

    问题: 想将HTML 或者XML 实体如&entity; 或&#code; 替换为对应的文本.再者,你需要转换文本中特定的字符(比如<, >, 或&). 解决方案: ...

  5. IP地址与MAC地址

    作者:知乎用户链接:https://www.zhihu.com/question/21546408/answer/28155896来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  6. 人脸识别技术大总结(1):Face Detection & Alignment

    http://blog.jobbole.com/85783/     首页 最新文章 IT 职场 前端 后端 移动端 数据库 运维 其他技术 - 导航条 - 首页 最新文章 IT 职场 前端 - Ja ...

  7. Java之网络爬虫WebCollector2.1.2+selenium2.44+phantomjs2.1.1

    Java之网络爬虫WebCollector2.1.2+selenium2.44+phantomjs2.1.1 一.简介 版本匹配: WebCollector2.12 + selenium2.44.0 ...

  8. LCD1602小程序

    1显示数据 typedef struct { unsigned long int mL_data; unsigned long int L_data; unsigned long int M3_dat ...

  9. 学习Zookeeper之第2章Zookeeper安装

    第 2 章 Zookeeper安装 2.1 本地模式安装部署 2.2 配置参数解读 第 2 章 Zookeeper安装 2.1 本地模式安装部署 1)安装前准备: (1)安装 jdk (2)通过 fi ...

  10. 谈谈java中对象的深拷贝与浅拷贝

    知识点:java中关于Object.clone方法,对象的深拷贝与浅拷贝 引言: 在一些场景中,我们需要获取到一个对象的拷贝,这时候就可以用java中的Object.clone方法进行对象的复制,得到 ...