进入本身github主页会看到本身的提交记录,若是某天没有提交记录,那天的小方框就显示灰色。强迫症的我,每次进来看着就感受不爽,
想着本身天天记得提交点东西,争取像阮一峰大神同样,天天都有提交记录。 node
可是,毕竟是人,哪天忙了就会忘记提交,因此想着能不能实如今本身阿里云服务器(linux系统)上,设置cron,定制下git命令,实现天天定点自动提交。linux
不一样的克隆方式致使校验方式不一样,对应的免秘方式也不同。简单来讲,https经过记住帐号密码免登,ssh经过校验生成的密钥免登。git
若是,你已经克隆了项目,不知道采用了哪一种方式,能够执行:github
git remote -v
若是是这样:shell
origin https://github.com/tywei90/git-auto-commit.git (fetch) origin https://github.com/tywei90/git-auto-commit.git (push)
那么就是https方式; vim
若是是这样:centos
origin git@github.com:tywei90/git-auto-commit.git (fetch) origin git@github.com:tywei90/git-auto-commit.git (push)
那么就是ssh方式。 bash
更改克隆方式也很简单: 服务器
https ——> ssh git remote set-url origin git@github.com:tywei90/git-auto-commit.git
ssh
ssh ——> https git remote set-url origin https://github.com/tywei90/git-auto-commit.git
针对上面两种克隆项目的方式,有两种免密登陆设置。
cd git-auto-commit/.git vim config
在config文件最后添加以下代码:
[credential] helper = store
保存,输入一次帐号密码后第二次就会记住帐号密码了
检查本机的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两个文件,分别表示生成的私钥和公钥。
在.ssh目录下,执行cat id_rsa.pub
,复制全部公钥内容
点击github的头像,在下拉菜单中选择 setting 选项,在打开页面的左侧菜单中点击 SSH and GPG keys,而后点击新页面右上角绿色按钮 New SSH key。填写title值,并将复制的公钥内容粘贴到key输入框中提交。
我看网上是输入以下命令:
ssh –t git@github.com
而后,个人会报ssh: Could not resolve hostname 342200223t: 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. 说明链接成功了,你们能够都试一试。
项目里的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端口的限制,比较坑!上面的步骤解决了以后天天的git提交记录,可是github本身主页默认显示以前一年的提交记录,那如何补上以前的记录呢?好在github的提交记录时间以commit时间为准,因此咱们能够更改本身电脑的时间,而后再commit。我系统是centos7,这里仅以此为例。不一样linux版本修改时间的命令可能不一样,你们网上百度下,文章不少。
好比,想要修改时间段位2018-01-01~2018-01-31,那么须要修改系统时间为2018-01-31,脚本以下:
timedatectl set-time '2018-01-31 13:00:00'
肯定咱们要修改的天数,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自动提交设置就完成了。咱们来看下成果:
而后天天中午12点会受到邮件以下:
其实,刷github提交记录自己没什么意义,可是我想说的是:工做生活中,咱们常常会有各类各样的想法,你们不要忽视了或者以为很难就不去作。其实真正动手去实践,发现并无那么难,反而颇有趣。并且不知不觉中就学到了不少知识。
(完)