从主分支构建到 gh 页面分支中



我想做什么:我正在使用github。我有两个分支。母版和 gh 页。我的主分支上有一个 unity3d 项目。当我运行它时,它会生成一个网页。我想在 gh-pages 分支上显示网页的内容。

我认为这意味着我必须在存储库的两个分支之间共享一个文件夹。这似乎几乎是不可能的。

有没有正确的方法可以做到这一点?我目前的解决方案是制作两个 github 项目,并从第一个项目构建到第二个项目。然后,我查看了第二个 gh 页面。这似乎非常...无关。我应该能够通过一个项目完成所有这些工作。

您可以在第一个存储库的工作目录结构中再次克隆存储库。所以在本地,你有这个文件夹结构:

project
|- .git/
|- .gitignore
|- (other project related files)
|- deploy/
   |- .git/
   |- (deployed files)

projectdeploy都是项目的克隆存储库; deploy已签出gh-pages分支。外部.gitignore显然列出了deploy/,因此该项目将忽略该文件夹。

现在,在部署时,将所有文件发布到部署文件夹中,然后 cd 到其中,执行git add .git commitgit push,然后部署生成的文件。

显然,这不会给你一个主节点和 gh-pages 分支之间的实际关系,但两者都将完全独立地存在于同一个存储库中。

这类似于 Jekyll 工作流。假设 unity3d 内容生成到名为 foo 的文件夹中。将foo添加到.gitignore然后执行此操作

git checkout master
<run unity3d>
git checkout gh-pages
git rm -qr .
cp -r foo/. .
rm -r foo
git add
git commit

查看非常棒的gh-pages npm模块。 用几行代码,例如:

var ghpages = require('gh-pages');
var path = require('path');
ghpages.publish(path.join(__dirname, 'dist'), function(err) { ... });

您将创建gh-pages分支,并将其推送到github!

更详细地说,来自文档:

调用此函数将创建当前存储库的临时克隆,创建一个gh-pages分支(如果尚不存在),从基本路径复制所有文件,或仅复制与可选src配置中的模式匹配的文件,提交所有更改,并推送到远程origin

它是超级可配置的,对我来说就像一个魅力。

我想"轻松地"将我的doxygen文档从主页面推送到gh页面。

我读了类似的解决方案,眼睛瞪大了。

我的解决方案是:

  1. 源分支:将文件列为 .gitignore 的"临时目录"
  2. 将分支更改为 gh-pages(保留列出的 .gitignore 目录)
  3. gh-pages 分支:rsync 从临时目录到正确的目录
  4. gh-pages 分支:"git add -u" 正确的位置目录
  5. gh-pages branch: 'git commit'

这仍然需要手动运行更新并提交,如果您仅从特定版本发布到网站,这可能是一件好事。

示例(主要是评论)在:https://github.com/nekenyu/libBsdSockets/blob/gh-pages/update_doc.sh

最新更新