在 Github 个页面上创建站点的暂存和生产版本

Creating staging and production versions of a site on Github Pages

我想使用 Github 页面发布生产网站(例如 www.example.com)以及同一网站的暂存版本(例如 staging.example.com ).

我已经在 Github 中为生产站点设置了一个回购协议(例如 my-jekyll-website),创建了一个 gh-pages 分支,并在回购协议的根级别设置了 CNAME 文件至 www.example.com。效果很好。

现在,还能够将更改推送到 staging.example.com 的最不痛苦的方法是什么?

我尝试过的一件事是在 Github 上设置第二个远程仓库(例如 my-jekyll-website-staging),然后将其作为远程仓库添加到我的本地 git 配置中.效果很好,除了 需要将存储库中的 CNAME 文件更改为 staging.example.com 才能正常工作。这不好,因为当我想部署到生产环境时,我需要将 CNAME 文件改回 www.example.com。不理想。

我看过使用 git filter content drivers,但如果我理解正确的话,那是关于在本地修改文件,而不是将不同版本的文件推送到不同的远程服务器。

编辑:我还考虑过完全不使用自定义域进行暂存:即,仅使用 username.github.io/my-jekyll-website-staging。不幸的是,我的站点根目录相关链接(例如 /images/foo.bar)中断了,因为 baseurl 现在在生产和暂存之间是不同的。

摘自以上评论:

[M]erge the staging git branch into the production branch and push[.] You could just keep the CNAMEs permanently pointing to their respective repos, but manipulate the repos separately.

Comment originally by Jonathan Chan

按照@JonathanChan 所说的去做:维护两个独立的分支,然后在每个分支中hijack 你的CNAME 文件。这样,本地更改(对 CNAME)将不会提交到存储库。