前言

进入自己github主页会看到自己的提交记录,如果某天没有提交记录,那天的小方框就显示灰色。强迫症的我,每次进来看着就感觉不爽,

想着自己每天记得提交点东西,争取像阮一峰大神一样,每天都有提交记录。

但是,毕竟是人,哪天忙了就会忘记提交,所以想着能不能实现在自己阿里云服务器(linux系统)上,设置cron,定制下git命令,实现每天定点自动提交。

第一步:克隆我的项目

不同的克隆方式导致校验方式不同,对应的免秘方式也不一样。简单来说,https通过记住账号密码免登,ssh通过校验生成的密钥免登。

  1. https克隆

  1. ssh克隆

如果,你已经克隆了项目,不知道采用了哪种方式,可以执行:

git remote -v

如果是这样:

origin https://github.com/tywei90/git-auto-commit.git (fetch)
origin https://github.com/tywei90/git-auto-commit.git (push)

那么就是https方式;

如果是这样:

origin  git@github.com:tywei90/git-auto-commit.git (fetch)
origin git@github.com:tywei90/git-auto-commit.git (push)

那么就是ssh方式。

更改克隆方式也很简单:

https ——> ssh

git remote set-url origin git@github.com:tywei90/git-auto-commit.git

ssh ——> https

git remote set-url origin https://github.com/tywei90/git-auto-commit.git

第二步:免密登录

针对上面两种克隆项目的方式,有两种免密登录设置。

1.账号密码免登(https克隆)

cd git-auto-commit/.git
vim config

在config文件最后添加如下代码:

[credential]
helper = store

保存,输入一次账号密码后第二次就会记住账号密码了

2.公钥私钥免登(ssh克隆)

2.1 生成公钥和私钥

检查本机的ssh密钥:

cd ~/.ssh
ls

如果提示:No such file or directory,说明你是第一次使用git,那就自己手动创建目录

使用ssh-keygen命令生成ssh密钥,命令如下:

ssh-keygen -t rsa

输入上面命令后,遇到选择直接回车,即可生成ssh 密钥。生成ssh 密钥后,可以到~/.ssh目录下查看相关文件,一般来说ssh 密钥会包含id_rsa和id_rsa.pub两个文件,分别表示生成的私钥和公钥。

2.2 拷贝公钥到你的github

在.ssh目录下,执行cat id_rsa.pub,复制所有公钥内容

点击github的头像,在下拉菜单中选择 setting 选项,在打开页面的左侧菜单中点击 SSH and GPG keys,然后点击新页面右上角绿色按钮 New SSH key。填写title值,并将复制的公钥内容粘贴到key输入框中提交。

2.3 测试链接github

我看网上是输入如下命令:

ssh –t git@github.com

然后,我的会报ssh: Could not resolve hostname \342\200\223t: Name or service not known的错误,搜了下,解决办法是执行下列命令:

ssh -t -p 22 git@github.com

-p表示修改服务器端口为22,当提示输入(yes/no)?时在后面输入yes回车即可。但是最后还是报错,后来又搜了下,执行如下代码:

ssh git@github.com

即将-t去掉就好了,看到 Hi ** You've successfully authenticated, but GitHub does not provide shell access. 说明连接成功了,大家可以都试一试。

第三步:设置cron,定时自动提交任务

项目里的add.js是用来修改records.txt的,每次执行会将当前的时间附加到records.txt文件末尾。然后让git自动提交即可。下面关键是cron的设置,对于linux系统不熟悉的我还是花了点时间的,这里直接将cron设置粘贴出来。先执行crontab -e进入cron编辑,然后粘贴如下代码:

00 12 * * * cd /home/git-auto-commit && git pull && /root/.nvm/versions/node/v6.6.0/bin/node add.js && git commit -a -m 'git auto commit' && git push origin master && git log -1 | mail -s "git auto commit successfully!" wty2368@163.com
  • 00 12 * * *的意思是,每天的12:00执行后面的命令。

  • /root/.nvm/versions/node/v6.6.0/bin/node是node二进制执行文件的绝对路径,不能直接写node命令,不会识别的。如何查出自己的node执行目录,其实很简单,执行which node即可。

  • 'git auto commit'是每次提交的comment,可以随意发挥

  • git log -1 | mail -s "git auto commit successfully!" wty2368@163.com 是取最新的一次git提交记录log作为邮件内容,"git auto commit successfully!"作为标题,发送邮件给wty2368@163.com邮箱。当然这个是可选项,我想让每次自动提交结束后给我发一封确认邮件,通过观察邮件内容的date值是不是当前时间,就可以判断这次自动提交是否成功。如果大家要实现这个功能,需要配置下linux邮件发送设置,这个有时间再写。主要要注意阿里云服务器对邮件25端口的限制,比较坑!

第四步:利用shell脚本批量补上之前的提交记录

上面的步骤解决了之后每天的git提交记录,但是github自己主页默认显示之前一年的提交记录,那如何补上之前的记录呢?好在github的提交记录时间以commit时间为准,所以我们可以更改自己电脑的时间,然后再commit。我系统是centos7,这里仅以此为例。不同linux版本修改时间的命令可能不同,大家网上百度下,文章很多。

4.1 修改系统时间为想要弥补时间段的终点

比如,想要修改时间段位2018-01-01~2018-01-31,那么需要修改系统时间为2018-01-31,脚本如下:

timedatectl set-time '2018-01-31 13:00:00'

4.2 进入项目目录,执行loop脚本

确定我们要修改的天数,2018-01-01到2018-01-31一共是31天,我们在命令行传入此参数

cd git-auto-commit
screen -d -m -L sh loop.sh 31

这里,screen -d -m -L命令可以将我们执行的任务后台,这样即使退出服务器连接也不会终止脚本的运行。大家可以刷新自己的github主页,看看是不是灰色区域都变绿了。

后记

至此,github自动提交设置就完成了,妈妈再也不用担心我哪天忘记提交github。

自动刷github提交记录的更多相关文章

  1. 推荐一个以动画效果显示github提交记录的黑科技工具:Gource

    程序员每天都会使用到git的一系列命令.其中用git log命令可以查看提交历史记录: 今天Jerry给大家推荐一款视觉效果非常酷炫的工具,名叫Gource,是一个能够将git代码仓库的提交历史以动画 ...

  2. github 首页不显示提交记录

    原因,一般是因为提交登录里配置的邮箱不是 github 上记录的邮箱. 如何查询提交记录里的邮箱? 如果是本地仓库, 使用小乌龟什么的定位到要查看的提交就可以了.如果是远程仓库, 进入提交记录详情,在 ...

  3. 实战:向GitHub提交代码时触发Jenkins自动构建

    当我们提交代码到GitHub后,可以在Jenkins上执行构建,但是每次都要动手去执行略显麻烦,今天我们就来实战Jenkins的自动构建功能,每次提交代码到GitHub后,Jenkins会进行自动构建 ...

  4. Github个人主页不显示提交记录的问题

    最近发现自己连续三天在github上的提交没显示在个人主页上,一番搜索后终于发现原来是因为没有把git的配置改过来,提交的代码时使用了不同的email. https://code.bradymower ...

  5. Github删除分支下所有提交记录

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 有时候,我们提交 ...

  6. 代码规范、GitHub提交源码的标准 答题人-杨宇杰

    1.格式与命名规范1.1 缩进 使用Tab缩进,而不是空格键1.2 换行 每行120字符 if,for,while语句只有单句时,如果该句可能引起阅读混淆,需要用" {"和&quo ...

  7. 【BZOJ-4590】自动刷题机 二分 + 判定

    4590: [Shoi2015]自动刷题机 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 156  Solved: 63[Submit][Status ...

  8. BZOJ4590 自动刷题机

    Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动 刷题机刷题的方式非常简单:首先会瞬间得出题目的正确做法,然后开始写 ...

  9. HDU 自动刷题机 Auto AC (轻轻松松进入HDU首页)

    前言: 在写这篇文章之前,首先感谢给我思路以及帮助过我的学长们 以下4篇博客都是学长原创,其中有很多有用的,值得学习的东西,希望能够帮到大家! 1.手把手教你用C++ 写ACM自动刷题神器(冲入HDU ...

随机推荐

  1. RGB_D_开发征程(使用Kinect)

    学习历程依此为纲! Kinect学习资料: kinect和openNI开发资料汇总:http://blog.csdn.net/chenli2010/article/details/6887646 原始 ...

  2. 模拟试题C

    模拟试题C 一.单项选择题(2′*14 =28′) 1.双线性法向插值法(Phong Shading)的优点是( ) A)法向计算精确 B)高光域准确 C)对光源和视点没有限制 D)速度较快 2.用编 ...

  3. bootstrap与jQuery结合的动态进度条

    此款进度条实现的功能: 1.利用了bootstrap的进度条组件. a.在最外层的<div>中加入class .progress,在里层<div>加入class .progre ...

  4. linux下的头文件和库文件搜索路径 (转)

     GCC 找头文件有三种策略: 1. 会在默认情况下指定到 /usr/include 文件夹 ( 更深层次的是一个相对路径, GCC 可执行程序的路径是 /usr/bin ,那么它在实际工作时指定头文 ...

  5. Jquery中拿到相同的对应的所有的标签

    在Jquery中相同的ID号不能用$()获得,即使是$().each()也不能获得所有的ID相同的元素,只能获得第一个匹配的元素. 比如: 以上4个div,如果用$("#jevoly&quo ...

  6. day01_20181223

    今日内容大纲:1,python的出生于应用.2,Python的历史.    python2x:        源码冗余,源码重复,源码不规范.    python3x:源码清晰优美简单.       ...

  7. 路飞学城Python-Day182

    Evernote Export 集群介绍 1.集群介绍 集群:将多个物理机器组成一个逻辑计算机,实现负载和容错 计算机集群简称集群,是一种计算机系统,它通过一组松散集成的计算机软件或硬件连接起来高度紧 ...

  8. javaSE常用的英语单词

    1.continut 使......继续 2.break 打破 3.switch 开关:转换:鞭子 4.case 实例:情况:箱 5.Object 目标:物体 6.Class 阶级:班级:种类 7.p ...

  9. PHP学习总结(3)——PHP入门篇之PHP的echo语句

    Echo语句 echo是PHP中的输出语句,可以把字符串输出(字符串用双引号括起来). 如下代码: <?php echo "Hello world!";?> 注意ech ...

  10. 使用Eclipse进行远程调控

    什么是远程调试,就是在A机器上利用Eclipse单步跟踪调试B机器上的Web应用,当然调试A机器上Web应用也是没有问题的,90%我都是调试本机的Web应用,远程调试的意义我想我不用说了,大家都会想到 ...