我想做的事:我正在使用 github。我有两个分支。母版和 gh 页。我的主分支上有一个 unity3d 项目。当我运行它时,它会生成一个网页。我想在 gh-pages 分支上显示网页的内容。
我认为这意味着我必须在我的存储库的两个分支之间共享一个文件夹。这似乎几乎是不可能的。
有正确的方法吗?我目前的解决方案是制作两个 github 项目并从第一个构建到第二个。然后,我查看第二个 gh-page。这似乎很……无关紧要。我应该能够用一个项目来完成这一切。
我想做的事:我正在使用 github。我有两个分支。母版和 gh 页。我的主分支上有一个 unity3d 项目。当我运行它时,它会生成一个网页。我想在 gh-pages 分支上显示网页的内容。
我认为这意味着我必须在我的存储库的两个分支之间共享一个文件夹。这似乎几乎是不可能的。
有正确的方法吗?我目前的解决方案是制作两个 github 项目并从第一个构建到第二个。然后,我查看第二个 gh-page。这似乎很……无关紧要。我应该能够用一个项目来完成这一切。
您可以在第一个存储库的工作目录结构中再次克隆您的存储库。所以在本地,你有这个文件夹结构:
project
|- .git/
|- .gitignore
|- (other project related files)
|- deploy/
|- .git/
|- (deployed files)
project
和都是deploy
您项目的克隆存储库;deploy
是否已gh-pages
检查分支。外部.gitignore
显然列出了deploy/
,因此该文件夹被项目忽略。
现在,在部署时,您将所有文件发布到部署文件夹中,然后 cd 进入其中,执行git add .
, git commit
,git push
然后部署生成的文件。
显然,这不会为您提供 master 和 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 文档从 master 推送到 gh-pages。
我读了类似的解决方案,我的眼睛呆滞了。
我的解决方案是:
这仍然需要手动运行更新和提交,如果您仅从特定版本发布到网站,这可能是一件好事。
示例(主要是评论)在:https ://github.com/nekenyu/libBsdSockets/blob/gh-pages/update_doc.sh