【问题标题】:How do I have github build a project page automatically from a folder in the master branch?如何让 github 从 master 分支中的文件夹自动构建项目页面?
【发布时间】:2016-02-19 11:37:13
【问题描述】:

我有一个github 项目,它有自己的项目页面。在这个项目的master 分支中有一个目录html,其中包含项目页面的文件。所以,例如项目https://github.com/con-f-use/foobar 有一个文件./html/index.html,可以通过https://con-f-use.github.io/foobar/index.html 访问。

到目前为止,当我在 master 分支中更改 html 时,通常我会通过以下命令更新项目页面(git 需要在其自己的分支 gh-pages 中):

 git subtree push --prefix html origin gh-pages   # From master branch

我想配置 git,以便在每次向 master 推送内容时自动更新。可选地它会很好,但最终不重要,如果它也以相反的方式工作。所以我可以推送到gh-pages 并且master 得到./html 中的更改,而无需我手动摆弄。我知道 git 允许指定提交后脚本。我可以将上述命令放在其中一个脚本中。问题是,我必须为存储库的每个本地克隆手动指定此脚本。我宁愿让 github 在非本地做。

有没有办法配置 github 以使 master 分支中的 ./html/ 目录自动与 gh-pages 分支的根 ./ 保持同步(反之亦然)并执行无需我更改本地 git 配置?

所以我想要的是,每当我推送到gh-pages 时,master 分支中的./html 也会得到更改。同样,当我在master./html 目录中推送新更改时,这些更改应自动传播到gh-pages./ 目录。

【问题讨论】:

    标签: git github configuration github-pages


    【解决方案1】:

    类似于 OP 中的subtrees 的替代解决方案是:

    git submodule add -b gh-pages git@github.com:con-f-use/foobar.git ./html
    

    那么步骤:

    • 确保./html 文件夹的内容位于遥控器上的gh-pages 中并且是最新的
    • 删除master中的./html文件夹,提交并推送
    • 使用上述命令将gh-pages 分支添加为子模块并提交并推送

    但这需要git pull --recurse-submodules 后跟git submodule update --remote --recursivemaster 上的提交才能更新。

    除了单次推送之外,这仍然需要运行命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-12
      • 2019-09-08
      • 2020-09-04
      • 2011-09-15
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多