从另一个子目录更新分支的根目录

cbo*_*tig 15 git github

在github上开发,我经常在我的主分支中维护一个html/_site/子目录,在那里我为项目生成基于Web的文档.我想切换到我的GH-页面分支和pull这只是内容html目录到GH-页面分支的根,所以它会呈现为通过github上一个不错的网站(在自动呈现HTML gh-pagesusername.github.com/repositoryname).这样做的最佳工作流程是什么?

如果我还没有设置gh-pages分支,我可以分支,清除分支,并复制html目录和presto 的内容,我有一个网站准备好了.但我不确定以后如何最好地更新gh-pages分支.

git branch gh-pages
git checkout gh-pages
# Remove files I don't need from the gh-pages branch
rm -rf data/ man/ R/ README.md NEWS NAMESPACE DESCRIPTION demo/
# move documentation to the root
mv inst/doc/html/* .
# remove the rest
rm -rf inst/
git add *
git commit -a -m "gh-pages documentation"
git push origin gh-pages
git checkout master
Run Code Online (Sandbox Code Playgroud)

现在我该怎么做才能在以后更新gh-pages分支?听起来这可能涉及子树合并,但我不太确定.

jth*_*ill 13

要开始你的gh-pages分支:

true | git mktree | xargs git commit-tree | xargs git branch gh-pages
Run Code Online (Sandbox Code Playgroud)

要获取您想要的任何内容,请说明主分支中的html目录,read-tree和commit:

git checkout gh-pages
git read-tree master:html
git commit -m'gh-pages documentation'
git push origin gh-pages
git checkout master
Run Code Online (Sandbox Code Playgroud)

你完成了

后期添加:添加到gh-pages分支的序列更短:

git commit-tree -p gh-pages -m "" master:html \
| xargs git update-ref refs/heads/gh-pages
Run Code Online (Sandbox Code Playgroud)

这不需要刷新当前工作树

  • 你的第一个命令运作良好,但有点神秘 - 你能概述它在做什么以及为什么你需要使用管道? (3认同)