手把手教你刷github提交記錄

前言

進入本身github主頁會看到本身的提交記錄,若是某天沒有提交記錄,那天的小方框就顯示灰色。強迫症的我,每次進來看着就感受不爽, 想着本身天天記得提交點東西,爭取像阮一峯大神同樣,天天都有提交記錄。node

阮一峯github提交記錄
阮一峯github提交記錄

可是,畢竟是人,哪天忙了就會忘記提交,因此想着能不能實如今本身阿里雲服務器(linux系統)上,設置cron,定製下git命令,實現天天定點自動提交。linux

第一步:克隆個人項目

不一樣的克隆方式致使校驗方式不一樣,對應的免祕方式也不同。簡單來講,https經過記住帳號密碼免登,ssh經過校驗生成的密鑰免登。git

  1. https克隆

https克隆
https克隆

  1. ssh克隆

ssh克隆
ssh克隆

若是,你已經克隆了項目,不知道採用了哪一種方式,能夠執行: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.gitssh

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提交記錄

而後天天中午12點會受到郵件以下:

git自動提交郵件
git自動提交郵件

歡迎你們star學習交流:github地址 | 個人博客

(完)

相關文章
相關標籤/搜索