← 返回文章选择

教程(一) github仓库的创建与同步

装好 git,配好 SSH key,建一个“用户名.github.io”仓库,给博客准备好托管的地方(2022 年旧文,工具和平台以当时版本为准)。

这篇做完,你会有一个能用 git 同步的 GitHub 仓库,名字是“用户名.github.io”,下一篇的 Hexo 会把博客部署到这里。前提只有一个:有一个 GitHub 账号。

先装好 git

git 是版本控制软件,也是目前最先进、最流行的一个。GitHub 是一个网站,开发者在上面开源自己的代码,它也提供付费的私有仓库,用的版本控制软件就是 git。

搭博客要靠 git 上传文件,所以先装 git,安装过程参考:git安装教程。装完可以顺手熟悉一下基本操作,菜鸟教程的安装页后面就有。

用 SSH 公钥连上 GitHub

用 git 往 GitHub 上传文件,要先通过 SSH 登录远程主机。登录方式有两种:口令登录和公钥登录。口令登录每次都要输密码,很麻烦;公钥登录省掉了这一步,所以我们选公钥。

  1. 生成 SSH key:获得ssh key
  2. 把 SSH key 添加到 GitHub:使用ssh连接到Github
  3. 用 git 同步 GitHub 仓库:github使用git教程

这几篇其实不用细学,按教程走一遍流程就够了。

现在再做,我会直接用官方的三条命令

上面几篇链接今天还打得开,但都停在 RSA 时代:菜鸟那篇给的是不带参数的 ssh-keygen,全程只认 id_rsa.pub;添加 key 的那篇已经搬到了 hzhhhbb.github.io 域名下,用的还是 -t rsa -b 4096。GitHub 现在首推 Ed25519,RSA 只留给不支持 Ed25519 的老系统,而且必须 4096 位。所以这一步我会直接照官方来:

Terminal window
ssh-keygen -t ed25519 -C "your_email@example.com" # 邮箱只是个标签

公钥贴到 GitHub 的入口是:头像 → Settings → SSH and GPG keys → New SSH key。界面是英文,新手最容易在这里点错菜单。

贴完用这条命令验收:

Terminal window
ssh -T git@github.com

第一次连会先弹出主机指纹,问 Are you sure you want to continue connecting (yes/no)?,输 yes。看到 Hi 用户名! You've successfully authenticated, but GitHub does not provide shell access. 就成了。官方特意说明这条命令会以退出码 1 结束,不是失败。

连不上,多半是这几个原因

最常见的报错是 Permission denied (publickey)。官方排查页里,我觉得最值得记住的有三条:

  1. 别给 git 命令加 sudo,提权后用的就不是你生成的那把钥匙了;
  2. 连接的用户名永远写 git,不是你的 GitHub 用户名;
  3. 确认公钥真的挂在账号上,私钥也加进了 ssh-agent(ssh-add -l -E sha256 应该有输出)。

还查不出来,就用 ssh -vT git@github.com 看它到底拿哪个密钥文件去试。

校园网、公司网经常封 22 端口,配置全对也连不上。这时先试 ssh -T -p 443 git@ssh.github.com,通了就在 ~/.ssh/config 里改走 443:

Host github.com
Hostname ssh.github.com
Port 443
User git

注意走 443 时主机名是 ssh.github.com,不是 github.com。

另外,第一次用 git 前顺手配好提交身份:git config --global user.name "你的名字"。这个名字和 GitHub 用户名不是一回事,会公开出现在你推送的每条提交里。

建一个用来放博客的仓库

托管静态网页的仓库和普通仓库建法一样,唯一的区别是仓库名有讲究:

image-20220628215011336

有两点要注意:

  1. 仓库名必须是“用户名.github.io”。如果不租域名,这就是以后访问博客的链接。
  2. GitHub 最近已把主分支改名为 main,不再是之前的 master,用 git 和后面填配置时都要留意。

创建成功后会得到这样一个仓库:

image-20220628220529838

把 HTTPS 链接记下来,下一篇配置 Hexo 时要用。

仓库名之外,还有几条硬规矩

GitHub Pages 的文档把用户站点的规矩写得很死,旧稿只说了第一条:

  • 用户名里有大写字母,仓库名里要全部改成小写;
  • 用免费账号的话,这个仓库必须是 public。GitHub Free 现在虽然能建不限量的私有仓库,但 Pages 只开放给公开仓库;
  • 一个账号只能有一个用户站点;
  • 就算仓库是私有的(付费计划),站点本身也一律公开。

如果以后想给别的项目也开个页面,用的是另一种“项目站点”,两者区别如下:

用户站点 项目站点
仓库 必须叫 用户名.github.io 任意项目仓库
数量 每个账号一个 每个仓库一个
地址 https://用户名.github.io https://用户名.github.io/仓库名

main 和 master:两边各说各的

“主分支改名 main”是 GitHub 2020 年 10 月 1 日的改动,只影响在网页上新建的仓库,老仓库不受影响。本地 git init 出来的默认分支至今仍是 master,要等 Git 3.0 才改。两边对不上,git push 时就会在远端多出第二个分支,这才是“要留意”的实际含义。一劳永逸的做法:

Terminal window
git config --global init.defaultBranch main

HTTPS 链接今天要配 token

记 HTTPS 链接这一步,今天要多知道一件事:GitHub 从 2021 年 8 月 13 日起不再接受账号密码做 Git 认证。走 HTTPS,弹出密码框时要填 personal access token;走 SSH 地址(git@github.com:用户名/用户名.github.io.git)就不用,上面配好的密钥直接生效。下一篇部署时两种都能用。

下一步

接下来是 Hexo 的部署配置和托管,做完你就有自己的博客了:hexo的部署配置以及托管

留下几句话 读者来信

读到这里,有什么想法?欢迎留下你的看法。