从master分支构建到gh-pages分支

时间:2012-12-17 00:54:06

标签: git github github-pages

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

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

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

4 个答案:

答案 0 :(得分:10)

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

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

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

现在,在部署时,您将所有文件发布到deploy文件夹,然后cd进去,执行git add .git commitgit push并部署生成的文件。< / p>

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

答案 1 :(得分:1)

这类似于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

Example

答案 2 :(得分:1)

查看非常棒的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远程。

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

答案 3 :(得分:0)

我想轻松地将我的doxygen文档从master转到gh-pages。

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

我的解决方案是:

  1. source branch:将.gitignore文件列为“临时目录”
  2. 将分支更改为gh-pages(保留.gitignore列出的目录)
  3. gh-pages branch:从临时目录到正确目录的rsync
  4. gh-pages branch:'git add -u'正确的位置目录
  5. gh-pages branch:'git commit'
  6. 这仍然需要手动运行更新和提交,如果您仅从特定版本发布到网站,这可能是一件好事。

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