Skip to content

测试网站小贴士

Alick Zhao edited this page May 1, 2021 · 4 revisions

摘要:本文介绍在 GitHub 上使用两个 git 分支,分别用于 Pull Request (PR) 以及测试网站(继续集成与部署),来为 FZUG 网站做贡献。

初次配置

首先,复刻 (fork) FZUG/fzug.github.io<you>/fzug.github.io,其中 <you> 是您的 GitHub 用户名。

将 GitHub 仓库克隆到本地,使得在您的本地克隆里:

  • origin 指向 <you>/fzug.github.io
  • upstream 指向 FZUG/fzug.github.io

示例命令如下:

git clone [email protected]:<you>/fzug.github.io.git
git remote add upstream https://github.com/FZUG/fzug.github.io.git

建议:

  • master (或其他特性分支)存放新特性或 bug 修复,用于提交 PR (Pull Request)
  • gh-pages 分支构建个人测试网站

下文以 master 分支为特性分支示例。我们需要 gh-pages 分支里总是比 master 多两个提交 (commit):

  • 一个删除 CNAME 文件,因为正式域名绑定的不是测试网站
  • 另一个修改 _config.yml 中的 baseurl 和 url,指向个人测试网站

参考:https://github.com/alick/fzug.github.io/commits/gh-pages 最上方的两个提交。

以下命令是操作示例:

git remote add alick https://github.com/alick/fzug.github.io.git
git checkout master
git checkout -b gh-pages
git cherry-pick alick/gh-pages~
git cherry-pick alick/gh-pages
git push -u origin gh-pages

在 GitHub 网站个人复刻版本仓库里设置 gh-pages 分支构建个人测试网站。参考 https://help.github.com/en/articles/configuring-a-publishing-source-for-github-pages

日常操作

在 master 分支实现新特性或 bug 修复:

git checkout master
# edit/add/remove files
git add <file>  # or git rm <file>
git commit

准备好要提交 PR 时:

git checkout master
git push origin master
git checkout gh-pages     # 切换到 gh-pages 分支
git rebase master         # 衍合 (rebase) 新变更
git push -f origin gh-pages    # 合并结果强制推送到个人仓库 gh-pages 分支,构建新测试网站

最终效果示例:https://alick.github.io/fzug.github.io/

PR 合并后,记得更新个人分支:

git remote update  # 抓取最新的上游 master 版本
git checkout master
git reset --hard upstream/master  # 强制本地 master 分支等于上游 master(小心:本地 master 修改会丢失!)
git push -f origin master  # 强制同步到个人 GitHub 仓库

注:这一流程无法支持多个并行的分支修改。master 分支上的多个提交会被 GitHub 视为一个 PR。您可能需要等待现有 PR 合并后再做新修改,或者创建更多的特性分支。多个修改也许可以一起 rebase 到 gh-pages 分支,这样个人测试网站同时测试多个修改合并的结果。或许还可以创建多个 GitHub 仓库承载多个测试网站实例。高级操作不再赘述。

Clone this wiki locally