我有一个简单的静态网站,基于HTML 5 boilerplate,整个事情都在github存储库中。项目结构是这样的
build
css
img
js
publish # this directory isn't in source control!
...
index.html & other files
基本上我所做的是运行一个构建脚本(from HTML 5 boilerplate),将所有HTML / CSS / JS编译到publish
目录中,该目录不在git存储库中
现在我想要做的是使用GitHub pages并能够将publish
目录输出用作GitHub页面。
GitHub页面的工作方式是,您创建一个名为gh-pages
的干净单独分支,它将包含最终内容。 我想要做的是,能够按需将当前publish
目录提交到gh-pages
分支,但我也希望将其保留在主.gitignore
分支<{strong> 1}}文件,因此它不会被推入源存储库。
我想这样做是为了预览项目的当前状态。
简而言之: 我需要将一个目录提交到一个单独的分支,因此它的root将与该目录的内容相同。 publish/css
css
分支上的gh-pages
只会{{1}}
答案 0 :(得分:2)
由于.gitignore
也是版本化的,所以不要将publish/
目录放在gh-pages
分支的.gitignore
文件中。然后,你可以做这样的事情:
ORIG_HEAD="$(git name-rev --name-only HEAD)" git checkout gh-pages && mv publish/* . && git commit -am "automatic update" && git checkout "$ORIG_HEAD"
它确实变得棘手,因为你想要在根目录而不是子目录中做事。另一种选择是简单地在不同的目录中维护相同存储库的单独克隆,该目录始终位于gh-pages
分支上。您可以让脚本只将文件写入那里而不是publish/
,然后只需在该克隆中提交。