如何将特定目录提交到git上的工作分支?

时间:2011-08-27 03:01:43

标签: git github

我有一个简单的静态网站,基于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}}

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/,然后只需在该克隆中提交。