我如何将特定的目录提交到不同于git上的工作分支



我有一个简单的静态网站,基于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/,然后在克隆中提交。

最新更新