资讯专栏INFORMATION COLUMN

手把手教你刷github提交记录

ChanceWong / 3274人阅读

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

前言

进入自己github主页会看到自己的提交记录,如果某天没有提交记录,那天的小方框就显示灰色。强迫症的我,每次进来看着就感觉不爽,
想着自己每天记得提交点东西,争取像阮一峰大神一样,每天都有提交记录。

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

第一步:克隆我的项目

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

https克隆

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 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. 说明连接成功了,大家可以都试一试。

第三步:设置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自动提交设置就完成了。我们来看下成果:

然后每天中午12点会受到邮件如下:

其实,刷github提交记录本身没什么意义,但是我想说的是:工作生活中,我们经常会有各种各样的想法,大家不要忽视了或者觉得很难就不去做。其实真正动手去实践,发现并没有那么难,反而很有趣。而且不知不觉中就学到了很多知识。

欢迎大家star学习交流:github地址 | 我的博客

(完)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/107526.html

相关文章

  • 把手你刷好题】——21.一道笔试题(非力扣)

    摘要:前言今天是刷题打卡第天可能有铁汁会问,为什么变成刷好题,而不是刷了呢因为最近笔者遇到很多经典的笔试题,想着记录下来,方便大家和自己学习,所以今后笔者会在标题上注明是不是力扣题。 【前言】 今天是刷题打卡第21天! 可能有铁汁会问,为什么变成刷好题, 而不是刷LeetCode 了呢?因为...

    骞讳护 评论0 收藏0
  • 把手你刷好题】——30.杨辉三角(作业)

    摘要:声明这里只是作业上面的内容,后续还会更新更好的方法。前言今天是刷题打卡第天芜湖,坚持一个月咯,蟹蟹大家的陪伴哈原题杨辉三角题目描述在屏幕上打印杨辉三角。 【声明】 这里只是作业上面的内容,后续还会更新更好的方法。  【前言】  今天是刷题打卡第30天! 芜湖,坚持一个月咯,蟹蟹大...

    不知名网友 评论0 收藏0
  • 把手你刷好题】——29.从大到小输出(非力扣,作业)

    摘要:前言今天是刷题打卡第天加油啦。原题从大到小输出题目描述写代码将三个整数数按从大到小输出。 【前言】 今天是刷题打卡第29天! 加油啦。 原题:从大到小输出 题目描述: 写代码将三个整数数按从大到小输出。 示例: 输入:12 23 22输出:23 22 12 思路: 本题主要记住...

    不知名网友 评论0 收藏0
  • 把手你刷LeetCode】——15.剑指offer之不用加减乘除做加法(位运算)

    摘要:前言今天是力扣打卡第天天天做递归做烦了,换换脑子,嘿嘿。原题不用加减乘除做加法题目描述写一个函数,求两个整数之和,要求在函数体内不得使用四则运算符号。补码的优势加法减法可以统一处理只有加法器。 【前言】 今天是力扣打卡第15天! 天天做递归做烦了,换换脑子,嘿嘿。 原题: 不用加减...

    QLQ 评论0 收藏0
  • 把手你刷LeetCode】——11.二叉搜索树的范围和(DFS)

    摘要:大家简单看一下纯递归的解法原题二叉搜索树的范围和解法题目描述给定二叉搜索树的根结点,返回值位于范围之间的所有结点的值的和。 【前言】 今天是力扣打卡第11天! 感谢铁汁们的陪伴,一起加油鸭!! 在第9天的时候写过这道题的递归解题方法,其实DFS使用的解题思想就是递归,所以大同小异啦...

    HelKyle 评论0 收藏0

发表评论

0条评论

ChanceWong

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<