跳转至

Github

Port 443

如果没有做过其他配置,会遇到过连不上、代码推不上去的报错。

在计算机网络里,SSH 协议默认走的是 22 号端口。 但是,很多学校的校园网、公司的内网、或者管得比较严的公共 Wi-Fi,为了防范网络攻击,会由网络管理员在路由器上把 22 号端口给死死封住(不允许内网机器去 SSH 连接外网)。

GitHub 官方提供了一个“后门”——443 端口。 443 端口是用来浏览普通网页(HTTPS)的,任何网络都不可能封杀它(封了就上不了网了)。所以,只要把 SSH 的流量伪装成网页流量从 443 端口挤出去,就能成功连上 GitHub。

所以在 C:\Users\用户名\.ssh\config 中:

Host github.com
    Hostname ssh.github.com
    Port 443
    User git
就有了这个配置,不过连不上的问题可以用其他解决办法

配置 ssh keys

ssh-keygen -t ed25519 -C "你的邮箱@example.com"
然后就生成好了,看一下生成的密钥是什么
cat ~/.ssh/id_ed25519.pub
然后在 Github 操作,添加上这个 ssh key

然后可以测试和 Github的链接

ssh -T git@github.com

如果连接成功,会显示:

Hi Jambit-X! You've successfully authenticated, but GitHub does not provide shell access.

Github Actions & Workflows

GitHub Actions 是 GitHub 内置的 CI/CD(持续集成/持续部署,Continuous Integration) 工具,可以在每次 push 代码时自动执行脚本。

基本概念

名词 含义
Workflow 一个自动化流程,写在 .yml 文件里
Job Workflow 中的一个任务,运行在一台虚拟机上
Step Job 中的一个步骤,可以是命令或别人写好的 Action
Action 可复用的步骤模块,如 actions/checkout
Runner 执行 Job 的虚拟机,常用 ubuntu-latest

文件路径

Workflow 文件必须放在这个路径,否则不会被触发: .github/workflows/你的文件名.yml

触发条件

on:
  push:
    branches:
      - main     # 推送到 main 分支时触发

为 MkDocs 配置自动部署

每次 push 后自动构建并发布到 GitHub Pages:

name: ci
on:
  push:
    branches:
      - master
      - main
permissions:
  contents: write
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: 3.x
      - uses: actions/cache@v4
        with:
          key: ${{ github.ref }}
          path: .cache
      - run: pip install mkdocs-material mkdocs-awesome-pages-plugin
      - run: mkdocs gh-deploy --force

mkdocs gh-deploy --force 会自动把构建产物推送到仓库的 gh-pages 分支。

Github Pages

GitHub Pages 是 GitHub 提供的静态网站托管服务,免费部署你的网站。

开启方式

仓库 → Settings → Pages → Source 选择分支

两种类型

类型 仓库命名规则 访问地址
User/Org Pages 用户名.github.io https://用户名.github.io/
Project Pages 任意名称 https://用户名.github.io/仓库名/

本站使用的是 User Pages

仓库名为 jambit-x.github.io,所以直接通过 https://jambit-x.github.io/ 访问,不带子路径。

发布源

gh-pages 分支:

MkDocs 的 gh-deploy 命令会自动创建并推送到这个分支,在 Pages 设置里选它即可。

gh-pages 分支由 CI 自动维护,不需要手动修改。