使用 master 的最新提交更新 gh-pages

Bring gh-pages up to date with the latest commit of master

我将 SourceTree 与 Github 存储库结合使用以对项目进行版本控制。有一段时间,我一直在使用 master 提交所有新更改,但时不时地,我希望 gh-pages 分支快进到 master 的最新提交,这样我就可以用生产中的页面更新实时页面(通常在主要更新完成后)。

我已经尝试过变基,正如另一个 SO post 所建议的那样,但这使问题变得更糟,因为 SourceTree 让我手动选择我想要的更改并且变基花了一点时间,特别是考虑到在 gh-pages 的最后一次更新之间提交。在一个项目中成功变基后,我基本上可以随时将 gh-pages 分支同步到 master,并且所有中间版本都会自动提交(尽管我无法在另一个存储库中重现相同的行为)。但是,我想要的是获得最后一次提交并覆盖所有文件。为此,我通常只是将 master 分支上的整个文件夹复制到另一个位置,然后切换到 gh-pages 并手动覆盖所有文件。不过,这是次优的,对于大型项目来说确实会出现问题。

所以,我想要和需要的是通过 SourceTree 或脚本自动执行此过程。

TL;DR:我需要一种半自动更新 gh-pages 到最新的 master 提交的方法,这将覆盖所有文件master 中的那些没有变基,然后将它们推送到 Github 存储库。

However, what I want is to get the last commit and overwrite all files.

你应该:

  • 使用 --ours 选项将 gh-pages 合并到 master(因此 master 实际上未受影响)。
  • 将 master 合并到 gh-pages(这意味着 gh-pages 快进到 master 并变得相同)

所以:

git checkout master
git merge --ours gh-pages
git checkout gh-pages
git merge master

别忘了,从几天前开始,您就不必再维护 gh-pages 分支了。

Simpler GitHub Pages publishing 现在允许将页面文件保存在 same 分支的子文件夹中(不再 gh-pages需要):

对于使用 create-react-app 创建应用的用户。

this was the only method that worked for me without errors

  1. 在您的 /public/index.html 中添加此代码段以解决浏览器缓存问题

<meta http-equiv='cache-control' content='no-cache'> 
<meta http-equiv='expires' content='0'> 
<meta http-equiv='pragma' content='no-cache'>

  1. 将默认违规从 gh-pages 更改为 master (guide)

  2. 删除本地和远程的 gh-pages 分支 (guide)

  3. 运行:npm run deploy。这将构建您的应用程序并使用更新的内容重新创建 gh-pages 分支。

  4. 选择 gh-pages 分支作为发布源,选择 /(root) 作为你的文件夹发布来源。(guide)

  5. 可能需要一些时间。一分钟后访问您的网站,现在应该已更新。

(ref).

如果您有其他选择,请分享!