-
Notifications
You must be signed in to change notification settings - Fork 12
测试网站小贴士
摘要:本文介绍在 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 仓库承载多个测试网站实例。高级操作不再赘述。