Git: обновить корневой каталог ветки из подкаталога другого
Развиваясь на github, я часто поддерживаю подкаталог html/
или _site/
в моей основной ветке, где я создаю веб-документацию для проекта. Я хотел бы переключиться на ветвь gh-pages и pull
только содержимое этого каталога html
в корень ветки gh-pages, поэтому он будет отображаться как хороший веб-сайт через github (который автоматически отображает html в gh-pages
при username.github.com/repositoryname
). Каков наилучший рабочий процесс для этого?
Если у меня еще нет настройки ветвления gh-страниц, я могу разветкить, очистить ветку и скопировать содержимое каталога 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
Теперь, что мне нужно сделать, чтобы обновить ветвь gh-pages позже? Похоже, что это может включать поддерево слияния, но я не совсем уверен.
Ответы
Ответ 1
Чтобы запустить ветвь gh-pages:
true | git mktree | xargs git commit-tree | xargs git branch gh-pages
Чтобы извлечь все, что вы хотите в него, скажем, каталог 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
и все готово.
Позднее добавление: есть более короткая последовательность для добавления в ветвь gh-pages:
git commit-tree -p gh-pages -m "" master:html \
| xargs git update-ref refs/heads/gh-pages
который не требует очистки текущего рабочего дерева