7

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

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

有正确的方法吗?我目前的解决方案是制作两个 github 项目并从第一个构建到第二个。然后,我查看第二个 gh-page。这似乎很……无关紧要。我应该能够用一个项目来完成这一切。

4

4 回答 4

11

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

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

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

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

显然,这不会为您提供 master 和 gh-pages 分支之间的实际关系,但两者将完全独立地存在于同一个存储库中。

于 2013-01-06T17:34:28.883 回答
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

例子

于 2013-01-06T17:23:21.300 回答
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遥控器。

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

于 2015-04-22T08:13:10.260 回答
0

我想“轻松”地将我的 doxygen 文档从 master 推送到 gh-pages。

我读了类似的解决方案,我的眼睛呆滞了。

我的解决方案是:

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

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

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

于 2013-03-26T00:44:13.637 回答