我有一个问题
基于gh-pages的情况
我的项目使用预处理器和其他困难的员工,因此,我的项目结构如下所示:
主分支
./-|
/src
/node_modules
/public-|
/js
/css
/etc
index.html
/etc
package.json
etc
src 文件夹中的所有代码源,已编译成公共文件夹。
.gitignore中的公共文件夹
我想将我公共文件夹中的所有文件提交到gh-pages分支。可能吗?如果是的话,怎么做?这是我的 gh-pages 分支
gh-pages分支
./-|
/js
/css
/assets
index.html
我认为运行grunt / gulp任务并将结果提交到另一个分支会很棒。
答案 0 :(得分:4)
我有一对完成此操作的脚本。在我的情况下,doc源位于.
(相对于脚本运行的位置,当然),生成的文档位于_build/html
,我发出命令
touch _build/html/.nojekyll # disable GitHub's Jekyll page generator
./commit-to-gh-pages.sh _build/html
其中commit-to-gh-pages.sh
是
#! /bin/sh
# Commit the generated HTML pages to the branch gh-pages.
# Will not push them to GitHub.
set -e -v
treehash=$(./hash-tree.py "${1:-_build/html}")
parent=$(git rev-parse gh-pages)
msg="Regenerated docs for $(git rev-parse HEAD)"
commithash=$(echo "$msg" | git commit-tree $treehash -p $parent)
echo "Updating gh-pages to $commithash"
git update-ref refs/heads/gh-pages "$commithash"
这将目录_build/html
写入Git索引,生成一个提交对象,该对象具有该目录树作为其内容,并将提交对象写入具有先前状态的gh-pages
分支分支作为父母。
棘手的部分是hash-tree.py
脚本,它将git hash-object
命令扩展到目录树。我不会复制粘贴它,但你可以得到它here。 (如果有人知道更优雅的方式,请告诉我。)
答案 1 :(得分:3)
我有很好的经验,将repo 克隆到自己的子目录并检查出一个不同的分支:对于你的情况类似
# add public to .gitignore
git clone . public
cd public
git checkout --orphan gh-pages
git reset --hard
git commit --allow-empty "initial"
让你开始。请参阅http://krlmlr.github.io/git-subbranch进行撰写。
答案 2 :(得分:1)
如果您有git版本>您可以尝试使用git subtree
1.7.11。我自己几乎无法理解细节,所以我不会尝试解释它,但在Hugo website builder有一个教程。相关部分从标题 configure git workflow 开始。