装好 git,配好 SSH key,建一个“用户名.github.io”仓库,给博客准备好托管的地方(2022 年旧文,工具和平台以当时版本为准)。
这篇做完,你会有一个能用 git 同步的 GitHub 仓库,名字是“用户名.github.io”,下一篇的 Hexo 会把博客部署到这里。前提只有一个:有一个 GitHub 账号。
先装好 git
git 是版本控制软件,也是目前最先进、最流行的一个。GitHub 是一个网站,开发者在上面开源自己的代码,它也提供付费的私有仓库,用的版本控制软件就是 git。
搭博客要靠 git 上传文件,所以先装 git,安装过程参考:git安装教程。装完可以顺手熟悉一下基本操作,菜鸟教程的安装页后面就有。
用 SSH 公钥连上 GitHub
用 git 往 GitHub 上传文件,要先通过 SSH 登录远程主机。登录方式有两种:口令登录和公钥登录。口令登录每次都要输密码,很麻烦;公钥登录省掉了这一步,所以我们选公钥。
- 生成 SSH key:获得ssh key
- 把 SSH key 添加到 GitHub:使用ssh连接到Github
- 用 git 同步 GitHub 仓库:github使用git教程
这几篇其实不用细学,按教程走一遍流程就够了。
现在再做,我会直接用官方的三条命令
上面几篇链接今天还打得开,但都停在 RSA 时代:菜鸟那篇给的是不带参数的 ssh-keygen,全程只认 id_rsa.pub;添加 key 的那篇已经搬到了 hzhhhbb.github.io 域名下,用的还是 -t rsa -b 4096。GitHub 现在首推 Ed25519,RSA 只留给不支持 Ed25519 的老系统,而且必须 4096 位。所以这一步我会直接照官方来:
ssh-keygen -t ed25519 -C "your_email@example.com" # 邮箱只是个标签公钥贴到 GitHub 的入口是:头像 → Settings → SSH and GPG keys → New SSH key。界面是英文,新手最容易在这里点错菜单。
贴完用这条命令验收:
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)。官方排查页里,我觉得最值得记住的有三条:
- 别给 git 命令加
sudo,提权后用的就不是你生成的那把钥匙了; - 连接的用户名永远写
git,不是你的 GitHub 用户名; - 确认公钥真的挂在账号上,私钥也加进了 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 用户名不是一回事,会公开出现在你推送的每条提交里。
建一个用来放博客的仓库
托管静态网页的仓库和普通仓库建法一样,唯一的区别是仓库名有讲究:

有两点要注意:
- 仓库名必须是“用户名.github.io”。如果不租域名,这就是以后访问博客的链接。
- GitHub 最近已把主分支改名为
main,不再是之前的master,用 git 和后面填配置时都要留意。
创建成功后会得到这样一个仓库:

把 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 时就会在远端多出第二个分支,这才是“要留意”的实际含义。一劳永逸的做法:
git config --global init.defaultBranch mainHTTPS 链接今天要配 token
记 HTTPS 链接这一步,今天要多知道一件事:GitHub 从 2021 年 8 月 13 日起不再接受账号密码做 Git 认证。走 HTTPS,弹出密码框时要填 personal access token;走 SSH 地址(git@github.com:用户名/用户名.github.io.git)就不用,上面配好的密钥直接生效。下一篇部署时两种都能用。
下一步
接下来是 Hexo 的部署配置和托管,做完你就有自己的博客了:hexo的部署配置以及托管
留下几句话 读者来信
读到这里,有什么想法?欢迎留下你的看法。