如何使用Github Pages分支在存储库中正确提交

时间:2014-09-30 11:52:44

标签: git github github-pages

我有一个问题

基于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任务并将结果提交到另一个分支会很棒。

3 个答案:

答案 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 开始。