我有一个简单的静态网站,基于HTML 5样板和整个事情是在github存储库。项目结构是这样的
build
css
img
js
publish # this directory isn't in source control!
...
index.html & other files
基本上我所做的是运行一个构建脚本(从HTML 5样板文件),编译所有的HTML/CSS/JS到publish
目录,这不是在git存储库。
现在我想做的是利用GitHub页面,并能够使用publish
目录输出作为GitHub页面。
GitHub页面的工作方式,是你创建一个名为gh-pages
的干净的独立分支,它将包含最终的内容。我想做的是能够按需提交当前publish
目录到gh-pages
分支,但我也想把它保存在主.gitignore
文件中,这样它就不会被推入源存储库。
我想这样做是为了预览项目的当前状态。
简而言之:我需要将一个目录提交到一个单独的分支,因此它的根将与该目录的内容相同。publish/css
将成为gh-pages
分支上的css
由于.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/
,然后在克隆中提交。