Git及Github的基本使用

  1. 1. Git和Github简介
    1. 1.1 什么是Git
    2. 1.2 什么是Github
    3. 1.3 Github和Git是什么关系
    4. 1.4 Github项目榜单推荐
  2. 2. Github基本使用
    1. 2.1 Github基本概念
    2. 2.2 开源许可证的选择
    3. 2.3 语义化版本发布规范
    4. 2.4 Github使用技巧
      1. 2.4.1 Github条件检索
      2. 2.4.2 Github下载单个文件
      3. 2.4.3 使用VS Code界面查看Github的代码
      4. 2.4.4 使Fork的项目与原作者自动更新
      5. 2.4.5 获取 Github 的 Token
    5. 2.5 Github异常问题
      1. 2.5.1 下载Github源代码速度慢
      2. 2.5.2 Github里的图片无法正常显示
  3. 3. 使用Git将项目推送至Github仓库
    1. 3.1 本地搭建Git环境
      1. 3.1.1 下载安装Git
      2. 3.1.2 生成并设置SSH KEY
      3. 3.1.3 Git设置代理
    2. 3.2 Git基本工作流程
      1. 3.2.1 Git的核心概念
      2. 3.2.2 Git提交代码基本步骤
    3. 3.3 使用Git提交代码并推送Github
      1. 3.3.1 初次提交
      2. 3.3.2 后续使用
      3. 3.3.3 Git的分支操作
      4. 3.3.4 删除旧仓库的历史记录
      5. 3.3.5 撤销本地提交
      6. 3.3.6 往Github推送大于100M的大文件
  4. 4. Github Action基本介绍
    1. 4.1 它是什么
    2. 4.2 基本概念
    3. 4.3 配置模板
    4. 4.4 使用示例
      1. 4.4.1 Fork仓库
      2. 4.4.2 获取Cookie有效信息
      3. 4.4.3 添加Cookie至Secrets
      4. 4.4.4 启用Action
      5. 4.4.5 效果验证
  5. 5. Github Page基本介绍
    1. 5.1 它是什么
    2. 5.2 使用示例
  6. 6. 使用GitHubPoster生成方块热力图
    1. 6.1 GitHubPoster简介
    2. 6.2 部署项目生成方块热力图
      1. 6.2.1 克隆项目并安装依赖
      2. 6.2.2 GitHubPoster的基本使用
    3. 6.3 将方块热力图插入文档并定时更新
      1. 6.3.1 定时生成方块热力图
      2. 6.3.2 将方块热力图插入文档
  7. 7. 参考资料

1. Git和Github简介

1.1 什么是Git

  • Git 是一个免费、开源的版本控制软件(记录若干文件内容变化,以便将来查阅特定版本修订情况)

  • 具体功能:记录文件的所有历史变化、随时可恢复到任何一个历史状态、多人协作开发或修改、错误恢复

1.2 什么是Github

  • Github 是全球最大的社交编程及代码托管网站,用于托管各种Git库,分为私有仓库和公开仓库两种类型。
  • Github 还具有Github Page、Github Action等实用功能供我们免费使用,没有服务器的小伙伴也可以在上面部署自己的网站和项目。

1.3 Github和Git是什么关系

  • Git是版本控制软件。
  • Github是项目代码托管的平台,借助git来管理项目代码 。

1.4 Github项目榜单推荐

学习优秀的开源项目,关注行业前辈了解最新的行业动态。

可以通过Github趋势榜寻找优秀的热门项目,除此之外,另提供几个收集性质的项目如下:

  • 记录每周值得分享的科技内容:科技爱好者周刊(每周五发布一期)
  • GitHub中文排行榜:GitHub-Chinese-Top-Charts(榜单每周更新一次)
  • 分享 GitHub 上有趣、入门级的开源项目:HelloGitHub(每月28号发布一期)
  • 推送 GitHub 上优秀的开源项目给开发者:GitHubDaily(更新频率较低)
  • Windows最佳应用程序和工具的精选列表:Awesome-Windows(更新频率较低)
  • MAC最佳应用程序和工具的精选列表:Awesome-Mac(更新频率较低)
  • 可在VPS自部署的Web应用程序列表:awesome-selfhosted(更新频率较低)

2. Github基本使用

2.1 Github基本概念

  • 仓库(Repository):仓库用来存放项目代码,每个项目对应一个仓库,多个开源项目则有多个仓库
  • 收藏(Star):收藏项目,方便下次查看
  • 复制克隆项目(Fork)&& 发起请求(Pull Request):在原项目的主分支上又建立了一个分支,你可以在该分支上任意修改,如果想将你的修改合并到原项目中时,可以pull request,这样原项目的作者就可以将你修改的东西合并到原项目的主分支上去。
  • 关注(Watch):关注项目,当项目更新可以接收到通知
  • 事务卡片(Issue):发现代码BUG,但是目前没有成型代码,需要讨论时用

2.2 开源许可证的选择

世界上最流行的六种开源许可证——MPLGPLBSDMITApacheLGPL

开源许可证详解见:https://choosealicense.com/licenses/

如何选择适合的开源许可证?

简单点来说,就是:

2.3 语义化版本发布规范

发布软件版本时,版本号应采用字母”v”+语义化版本规范,详见:https://semver.org/lang/zh-CN/

对于未正式发行的版本,后加”-“符号和tag。 如 v0.1.0-alpha

tag表示了此版本软件处于的开发阶段,可选的tag和对应含义如下:

1
2
3
4
* alpha  自测版本
* beta 外部测试版本
* rc 发行候选版本,可能有rc1,rc2等版本
* stable 稳定版,经过长期正式使用仍然稳定的版本

2.4 Github使用技巧

2.4.1 Github条件检索

1
2
3
4
搜索条件:stars:             举例:stars:>=500,匹配收藏数量超过500的项目
搜索条件:forks: 举例:forks:>=500,匹配分支数量超过500的项目
搜索条件:language: 举例:language:javascript,匹配以javascript作为开发语言的项目
搜索条件:Awesome 举例:Awesome windows,检索有关windows的工具软件

注:Awesome 已经成为不少 GitHub 工具软件项目喜爱的命名,所以可以用它来检索,并不是它本身有这个功能。

2.4.2 Github下载单个文件

需求情景:有时我们只需下载Github上的单个文件,而无需下载整个仓库。

操作方法:跳转到欲下载文件的具体页面,右键“Raw”,再点击“链接另存为…”。

2.4.3 使用VS Code界面查看Github的代码

项目地址:https://github.com/conwnet/github1s

使用方式:直接在项目地址的github后面加上1s即可,例如https://github1s.com/Sunnyyoung/WeChatTweak-macOS.git

2.4.4 使Fork的项目与原作者自动更新

可以借助一个名为pull的Github app来实现,它每隔几小时将自动拉动请求使您的Fork与上游保持最新状态。

注:安装完的Github app可以在Settings——Developer settings——Applications里找到

2.4.5 获取 Github 的 Token

Step1:点击右上角头像——点击 Settings——点击底下的 Deverloper settings

Step2:点击 Personal Access Token ——再点击 Generate new token——填写信息,勾选 repo,拉到最下点击 Generate token——保存生成的 Token(只能看到这一次)

Token

2.5 Github异常问题

2.5.1 下载Github源代码速度慢

方式一:使用GitHub加速的Chrome插件、Tempermonkey脚本

方式二:通过绕过DNS解析,直接在本地绑定host

  • Step1:打开 http://tool.chinaz.com/dns,输入github.com,选择一个TTL值较小的IP地址(如:192.30.253.113)

  • Step2:打开电脑的 C:\Windows\System32\drivers\etc 目录,找到hosts文件,在文件末追加:

    1
    2
    192.30.253.113 github.com,
    151.101.109.194 github.global.ssl.fastly.Net
  • Step3:刷新DNS缓存,在cmd命令行中输入ipconfig /flushdns

方式三:使用镜像站进行下载

  • 在项目地址的github.com后面加上.cnpmjs.org即可,例如https://github.com.cnpmjs.org/Sunnyyoung/WeChatTweak-macOS.git

2.5.2 Github里的图片无法正常显示

问题描述:Github里的图片无法正常显示,点击图片显示“找不到 raw.githubusercontent.com 的网页”错误描述信息。

原因分析:Github的raw文件读取地址遭受DNS污染,导致文件下载困难。

解决方法:

  • Step1:打开目录:C:/Windows/System32/drivers/etc/
  • Step2:找到hosts文件,使用管理员模式打开记事本,在其尾部添加:151.101.0.133 raw.githubusercontent.com
  • Step3:保存hosts文件,重启计算机

基本常识:

  • DNS污染:网域服务器缓存污染(DNS cache pollution),又称域名服务器缓存投毒(DNS cache poisoning),是指一些刻意制造或无意中制造出来的域名服务器数据包,把域名指往不正确的IP地址。
  • hosts:它是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的 IP 地址建立一个关联的“数据库”。当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从hosts文件中寻找对应的 IP 地址,一旦找到,系统就会立即打开对应网页,如果没有找到,则系统会将网址提交 DNS 域名解析服务器进行 IP 地址的解析。

3. 使用Git将项目推送至Github仓库

3.1 本地搭建Git环境

3.1.1 下载安装Git

下载:Git官网(墙内下载极慢,需要翻墙下载)

安装过程中一路next即可,安装成功后桌面右键单击出现Git GUI Here以及Git Bash Here

3.1.2 生成并设置SSH KEY

Step1:生成SSH KEY

  • 本地Git仓库和远程仓库之间的传输是通过SSH加密的,先看一下C:\Users\xxx有没有.ssh目录,有的话再看下里面有没有id_rsaid_rsa.pub这两个文件,如果没有就通过下面命令创建:

    1
    $ ssh-keygen -t rsa -C "[email protected]"                        // 生成SSH KEY

    然后一路回车,这时你就会在用户下的.ssh目录里找到id_rsaid_rsa.pub这两个文件。

Step2:设置SSH KEY

  • 登录 Github ,找到右上角的图标,打开点进里面的 Settings ,再选中里面的 SSH and GPG KEYS ,点击右上角的 New SSH key,然后 Title 里面随便填,再把刚才 id_rsa.pub 里面的内容复制到 Title 下面的 Key 内容框里面,最后点击Add SSH key,这样就完成了SSH Key 的加密。

3.1.3 Git设置代理

由于Github的服务器在国外,虽然没有被 GFW 完全的墙掉,但也经常会受一些干扰,导致速度极慢甚至超时。强烈建议在电脑装一下诸如Clash、SSR的翻墙软件,然后给Git设置代理,这样访问速度就很快了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//设置全局代理
$ git config --global https.proxy http://127.0.0.1:1080
$ git config --global https.proxy https://127.0.0.1:1080

//使用socks5代理的 例如ss,ssr。1080是windows下ss的默认代理端口,mac下不同,或者有自定义的,根据自己的改
$ git config --global http.proxy socks5://127.0.0.1:1080
$ git config --global https.proxy socks5://127.0.0.1:1080

//只对github.com使用代理,其他仓库不走代理
$ git config --global http.https://github.com.proxy socks5://127.0.0.1:1080
$ git config --global https.https://github.com.proxy socks5://127.0.0.1:1080

//取消github代理
$ git config --global --unset http.https://github.com.proxy
$ git config --global --unset https.https://github.com.proxy

//取消全局代理
$ git config --global --unset http.proxy
$ git config --global --unset https.proxy

说明:

  • 查看已设置的 git 配置:git config --list
  • 如果在命令行使用git clone时报Failed to connect to github.com port 443: Timed out的错误,这是Git设置的代理有问题,检查相关设置是否正确(一般是代理软件换了端口,而Git的代理配置里没有及时更改)

3.2 Git基本工作流程

3.2.1 Git的核心概念

Git 最核心的一个概念就是工作流。

  • 工作区(Workspace)是电脑中实际的目录。
  • 暂存区(Index)类似于缓存区域,临时保存你的改动。
  • 仓库区(Repository),分为本地仓库和远程仓库。

3.2.2 Git提交代码基本步骤

使用Git向远程Github仓库提交代码主要有以下三步:

  • Step1:git add从工作区提交到暂存区
  • Step2:git commit从暂存区提交到本地仓库
  • Step3:git push或git svn dcommit从本地仓库提交到远程仓库

3.3 使用Git提交代码并推送Github

3.3.1 初次提交

Step1:在Github创建仓库,然后记录下来仓库的URL(末尾带.git

Step2:设置邮箱、连接远程仓库、记住密码、首次提交推送的命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[1] 设置用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
[2] 连接到远程仓库并设置记住用户名和密码
git remote add origin URL # 连接到远程仓库并创建别名
git config --global credential.helper store # 设置自动记住用户名和密码(第一次push会被记住,后续无需再输入)
[3] 解决使用git add命令时报错LF will be replaced by CRLF的问题
git config auto.crlf true
[4] 将项目从本地提交到仓库
git init # 创建git工作区
git add . # 提交所有文件到暂存区
git status # 查看git状态
git commit -m 'description' # 提交到仓库,''内的是描述信息
[5] 将代码推送至远程仓库
git pull origin master --allow-unrelated-histories # 取回远程仓库分支的更新,再与本地的分支合并
git push -u origin master # 将本地仓库推送至远程仓库

说明:

1)用户名和邮箱设置:在github仓库主页显示谁提交了该文件,要根据github的注册信息来填写,不要填错了。

2)git init后,在文件夹内生成.git文件(如果没有,则点击资源管理器的查看,勾选“隐藏的项目”)

3)仓库地址可在clone 或者 download按钮下取得(即仓库的浏览器地址栏末尾加.git

4)使用git pull origin master命令报错:fatal:refusing to merge unrelated histories

  • 错误原因:如果合并了两个不同的开始提交的仓库,在新的git会发现这两个仓库可能不是同一个,为了防止开发者上传错误,于是就出现了此提示。

  • 解决办法:如我在Github新建一个仓库,写了License,然后把本地一个写了很久仓库上传。这时会发现 github 的仓库和本地的没有一个共同的 commit 所以 git 不让提交,认为是写错了 origin ,如果开发者确定是这个 origin 就可以使用 –allow-unrelated-histories 告诉 git 允许不相关历史合并

5)使用git push origin master命令报错:error:failed to push some refs to URL

  • 错误原因:直接在 GitHub 上修改后,内容已经和本地不一致了,必须要合并(merge)
  • 解决办法:先使用git pull origin master命令下载到本地并合并,自动弹出的vim编辑器(按 i 进行编辑,说明为什么合并,可选择不修改,ESC进入命令行模式然后输入:wq退出),再git push origin master

6)使用git add .命令报错:warning: LF will be replaced by CRLF

  • 错误原因:在Unix系统中,行尾用换行(LF)表示。在窗口中,用回车(CR)和换行(LF)(CRLF)表示一行。当您从unix系统上载的git中获取代码时,它们将只有LF。
  • 解决办法:如果您是在Windows计算机上工作的单个开发人员,并且您不关心git自动将LF替换为CRLF,则可以通过在git命令行中运行git config core.autocrlf true来关闭此警告。

7)git总是弹出git login弹框页面的问题

  • 情景描述:每次push到远程的时候总会出现弹框,要求输入账号和密码,而输入账号和密码,明明是对的,却提示登录失败。
  • 出现原因:会弹出这个登录弹框页面,是因为是执行过git config --global credential.helper manager 这个命令,你可以通过: git config --list 来查看,里面有一行credential.helper=manager
  • 解决办法:输入git config --system --unset credential.helper命令即可,再使用git config --list 来查看,里面配置改为了credential,helper=store,输入一次账号密码就可记住了。

3.3.2 后续使用

完成初次部署后,后续使用就比较简单了,常用的有以下几个命令:

1
2
3
4
5
6
git config auto.crlf true # 解决使用git add命令时报错LF will be replaced by CRLF的问题
git add . # 提交所有文件到暂存区
git status # 查看git状态
git commit -m 'description' # 提交到仓库,''内的是描述信息
git pull origin master # 取回远程仓库分支的更新,再与本地的分支合并
git push origin master # 将本地仓库推送至远程仓库

注:我们可以把一些常用的命令组合写成shell脚本,这样就不用每次都一条条命令输入了,直接在Git Bash里执行bash xxx.sh即可。

3.3.3 Git的分支操作

1
2
3
4
git branch dev      # 创建分支
git checkout dev # 切换分支
git branch -a # 查看分支
git push origin dev # 推送分支

3.3.4 删除旧仓库的历史记录

把旧项目提交到Git上,但是会有一些历史记录,这些历史记录中可能会有项目密码等敏感信息,可以通过如下操作删除这些历史记录,形成一个全新的仓库,并且保持代码不变。

clear_commit_history.sh

1
2
3
4
5
6
git checkout --orphan latest_branch
git add -A
git commit -am "commit message"
git branch -D master
git branch -m master
git push -f origin master

3.3.5 撤销本地提交

有时我们会误提交某些代码,或者发现代码有bug需要修复。在未推送到远程服务器前,本地提交时都可以撤销的。

1
2
$ git log  // 查看日志,找到要恢复版本的版本代号
$ git reset <版本代号> // reset指定版本的版本代号即可还原

3.3.6 往Github推送大于100M的大文件

GitHub是存在单次上传文件的大小限制的,直接上传一个大于100M的文件(比如深度学习的模型文件一般都很大)就会报错。

这时就需要使用GitHub的一个插件进行上传,该插件就是:Git Large File Storage (LFS)

Step1:下载安装LFS客户端

Step2:开启大文件上传并开启跟踪

1
2
3
$ git lfs install             // 开启大文件上传
$ git lfs track "*.tar" // 跟踪指定后缀名的文件(把*.tar换成自己的大文件后缀)
$ git add .gitattributes // 添加属性跟踪文件

Step3:先把.gitattributes文件推送Github

如果已经 git add了大文件,需要先通过git log和git reset回退到无大文件的版本,先把.gitattributes文件推送到Github

1
2
3
$ git add .gitattributes 
$ git commit -m "set large file upload"
$ git push origin master

Step4:再把项目(包含大文件即可)推送到Github

1
2
3
$ git add . 
$ git commit -m "commit message"
$ git push origin master

4. Github Action基本介绍

4.1 它是什么

GitHub Actions 是在 GitHub Universe 大会上发布的,被 Github 主管 Sam Lambert 称为 “再次改变软件开发” 的一款重磅功能。于 2018 年10月推出,内测了一段时间后,于 2019年11月13日正式上线。

  • GitHub 会提供一个以下配置的服务器做为 runner(2-core CPU、7 GB of RAM memory、14 GB of SSD disk space),免费额度最多可以同时运行 20 个作业。

  • 很多操作在不同项目里面是类似的,完全可以共享。GitHub 也注意到了这一点,于是它允许开发者把每个操作写成独立的脚本文件,存放到代码仓库,使得其他开发者可以引用。

  • GitHub Actions 中文文档:GitHub Actions Documentation

  • GitHub Actions 官方市场:Actions Marketplace

4.2 基本概念

GitHub Actions 有一些自己的术语:

  • workflow(工作流程):持续集成一次运行的过程,就是一个 workflow。
  • job (任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。
  • step(步骤):每个 job 由多个 step 构成,一步步完成。
  • action (动作):每个 step 可以依次执行一个或多个命令。

4.3 配置模板

我们来看看Github Action配置文件的基本构成,配置文件格式是.yml,示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# main.yml
# 一个 workflow,名字为Github Action Example
name: Github Action Example

# 触发 workflow 的事件
on:
push:
# 分支随意
branches:
- master

# 一个workflow由执行的一项或多项job
jobs:
# 一个job任务,任务名为build
build:
# runs-on 指定job任务运行所需要的虚拟机环境(必填字段)
runs-on: ubuntu-latest
# steps是每个Job的运行步骤,可以包含一个或多个步骤
steps:
# action命令,切换分支获取源码
- name: Checkout
# 使用action库 actions/checkout获取源码
uses: actions/[email protected]
# action命令,安装Node10
- name: use Node.js 10
# 使用action库 actions/setup-node安装node
uses: actions/[email protected]
with:
node-version: 10
# action命令,install && test
- name: npm install and test
# 运行的命令或者 action
run: |
npm install
npm run test
# 环境变量
env:
CI: true

4.4 使用示例

以下使用“Github Action部署Bilibili自动签到脚本”作为示例(这属于滥用行为,原项目已被删除,建议在自己服务器上用Docker部署,以下只是为了演示Github Action的使用流程)

4.4.1 Fork仓库

  • 点击右上角将项目Fork到自己的账号下。

  • Fork 仓库后,GitHub 默认不自动执行 Actions 任务,请修改 .github/trigger.json 文件,将 trigger 的值改为 1,这样每天就会自动执行定时任务了。

    1
    2
    3
    4
    {
    - "trigger": 0
    + "trigger": 1
    }

4.4.2 获取Cookie有效信息

  • Step1:浏览器打开并登录 Bilibili官网

  • Step2:右键“检查”,打开开发者工具,依次点击Application -> Storage -> Cookies,找到 bili_jctSESSDATADEDEUSERID 三项,复制其值。

4.4.3 添加Cookie至Secrets

4.4.4 启用Action

  • Github Actions 默认处于关闭状态,第一次需要手动开启 Actions 执行工作流。

4.4.5 效果验证

  • 当你完成上述流程,可以在Actions页面点击AUTO_TASK_FOR_BILIBILI–>start–>Build with maven查看结果。

5. Github Page基本介绍

5.1 它是什么

GitHub Pages 是GitHub 提供给用户用来展示个人或者项目主页的静态网页系统。 也就是说我们可以把项目代码写好后上传GitHub,然后利用GitHub Pages 为这个项目生成一个静态页面,别人通过网址可以访问我们的页面。

注:Github page 仅支持静态网页,仓库里面是.html文件

5.2 使用示例

[1] 新建仓库(仓库名必须是用户名.github.io

[2] 在仓库下新建index.html文件,并编写内容。

[3] 在浏览器输入:https://用户名.github.io即可访问我们的Github Page

注:Github Page的文件未必需要自己手动编写,可以借助Gitbook之类的生成工具进行构建,详见我的另一篇博客:搭建Gitbook并将其托管到Github

6. 使用GitHubPoster生成方块热力图

6.1 GitHubPoster简介

GitHubPoster 是一个使用Python实现的生成Github的那种方块热力图的项目。支持的平台有:Strava开心词场扇贝Nintendo SwitchGPX多邻国IssueTwitterYouTubeBilibiliGitHubGitLabKindleWakaTimeDota2

6.2 部署项目生成方块热力图

本文VPS系统用的是Debian 10 x86_64,系统预装的Python版本是2.7.16,而该项目要求Python3.6+,因此需要先升级。

升级Python至3.x的操作详见我的另一篇博客:VPS基本部署环境的搭建与配置

6.2.1 克隆项目并安装依赖

依次输入以下三条命令克隆项目并安装依赖,如果安装依赖有报错请自行解决。

1
2
3
$ git clone https://github.com/yihong0618/GitHubPoster.git
$ cd GitHubPoster
$ pip install -r requirements.txt

6.2.2 GitHubPoster的基本使用

不同平台的命令参数有所不同,可以使用python cli.py <type> --help命令查看具体参数,详见 GitHubPoster README

以下以 Leetcode 平台为例,生成方块热力图,其他平台的用法本文就不赘述了。

[1] 查看命令参数

先使用以下命令查看一下 Leetcode 平台的命令参数。

1
$ python cli.py leetcode --help

命令参数

[2] 获取Cookie

Step1:Chrome浏览器打开 Leetcode官网 并登录账号

Step2:右键“检查”,打开开发者工具,点击Network并按Ctrl+R刷新页面,点击all/资源复制其Cookie。

[3] 运行项目生成方块热力图

切换到GitHubPoster的安装目录执行生成命令,注意需要把${}标识的地方换成自己的配置(不带${}

1
2
$ cd GitHubPoster
$ python cli.py leetcode --cookie ${leetcode_cookie} --year ${year} --me ${name} --cn

生成的方块热力图在/root/GitHubPoster/OUT_FOLDER目录下,是一个svg文件。

6.3 将方块热力图插入文档并定时更新

6.3.1 定时生成方块热力图

我们可以写一个生成脚本,然后将其加入到 Crontab 定时任务里,比如每天跑一次,以保证该方块热力图每日更新。

Step1:新建一个generateGitHubPoster.sh脚本,并使用chmod u+x命令赋予可执行权限,脚本内容如下:

1
2
3
cd GitHubPoster
python cli.py leetcode --cookie ${leetcode_cookie} --year ${year} --me ${name} --cn
cp /root/GitHubPoster/OUT_FOLDER/leetcode.svg ${网站目录}

注:需要自行将上述信息换成自己的配置。

Step2:配置定时任务执行脚本

1
$ crontab -e

然后添加如下代码保存即可:

1
59 23 * * * 脚本路径/generateGitHubPoster.sh

说明:含义是每天23:59分自动执行脚本。

6.3.2 将方块热力图插入文档

Step1:将生成的方块热力图放到网站目录或者图床里

Step2:用常规的Markdown插入图片的语法![](svg URL)引用即可

7. 参考资料

[1] 学会Git玩转Github from Bilibili

[2] 如何选择开源许可证?from 阮一峰的网络日志

[3] 常见的开源许可证介绍 from Github

[4] 掌握3个搜索技巧,在 GitHub 上快速找到实用软件资源 from 少数派

[5] Git的使用–如何将本地项目上传到Github from 知乎

[6] git无法pull仓库:refusing to merge unrelated histories报错 from CSDN

[7] git push origin master报错解决办法 from CSDN

[8] git clone时报错Failed to connect to github.com port 443: Timed out from Mentalflow

[9] Git 设置代理 from 简书

[10] 解决向github提交代码不用输入帐号密码 from segmentfault

[11] git强制覆盖本地代码(与git远程仓库保持一致) from CSDN

[12] github上如何下载单个文件 from CSDN

[13] 对比Git与SVN,这篇讲的很易懂 from segmentfault

[14] GitHub Actions 入门教程 from 阮一峰

[15] GitHub Actions 部署爬虫并定时发送邮件 from CSDN

[16] GitHub Action一键部署 from Gitbook

[17] 把一切都变成 GitHub svg 海报和 Skyline from Github

[18] Linux升级python至3.x from CSDN

[19] 如何在Debian 10上安装pip from myfreax

[20] git总是弹出git login弹框问题 from CSDN

[21] git仓库删除所有提交历史记录,成为一个干净的新仓库

[22] git撤销本地提交 - git reset from CSDN

[23] github 上传大文件100MB姿势 from 博客园