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

Git 从另一分支的子目录更新分支的根目录,git,github,Git,Github,在github上开发时,我经常在我的主分支中维护一个html/或\u site/子目录,在那里我为项目生成基于web的文档。我想切换到我的gh pages分支,将这个html目录的内容拉入gh pages分支的根目录,这样它将通过github呈现为一个不错的网站(在username.github.com/repositoryname中自动呈现gh pages中的html)。执行此操作的最佳工作流是什么 如果我还没有设置gh pages分支,我可以分支,清除分支,并复制html目录的内容,这样我就

在github上开发时,我经常在我的主分支中维护一个
html/
\u site/
子目录,在那里我为项目生成基于web的文档。我想切换到我的gh pages分支,将
这个
html
目录的内容拉入gh pages分支的根目录,这样它将通过github呈现为一个不错的网站(在
username.github.com/repositoryname
中自动呈现
gh pages
中的html)。执行此操作的最佳工作流是什么

如果我还没有设置gh pages分支,我可以分支,清除分支,并复制
html
目录的内容,这样我就有了a站点。但我不确定以后如何最好地更新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

现在我应该做什么来更新gh pages分支?这听起来可能涉及,但我不太确定

要启动您的gh页面分支:

true | git mktree | xargs git commit-tree | xargs git branch gh-pages
git commit-tree -p gh-pages -m "" master:html \
| xargs git update-ref refs/heads/gh-pages
要将任何您想要的内容提取到其中,请从主分支读取html目录,读取树并提交:

git checkout gh-pages
git read-tree master:html
git commit -m'gh-pages documentation'
git push origin gh-pages
git checkout master
你完成了

延迟添加:添加到gh pages分支的顺序较短:

true | git mktree | xargs git commit-tree | xargs git branch gh-pages
git commit-tree -p gh-pages -m "" master:html \
| xargs git update-ref refs/heads/gh-pages

哪个不需要刷新当前工作树

孤立分支在这里同样合适吗?()@VonC取决于你想要什么。这样,您的gh pages分支保留历史,如果您成为孤儿,则没有历史。这里实现孤立的简单方法是
git提交树v1.6:html-mreset | xargs git branch-f gh页面
。无论如何,
git提交树的用法非常有趣。不过我不会对你的答案投赞成票:我已经投了。谢谢,
readtree
是一个非常好的解决方案!绝对比从
gh页面
分支中的
git checkout master inst/doc/html
更可取,然后覆盖所有内容。您的第一个命令运行良好,但有点晦涩——您能概述一下它在做什么以及为什么需要使用管道吗?