разделить и отправить зафиксированные файлы в две разные ветви - PullRequest
3 голосов
/ 11 мая 2019

Я хотел бы создать сайт с VuePress и развернуть его с помощью Github Pages.К счастью, VuePress может сгенерировать папку dist со всеми необходимыми файлами .html.Эта папка находится по адресу (из корня) . / Docs / .vuepress / dist , поэтому я могу взять все файлы из этой папки и развернуть их.

К сожалению, Github Pages может развертывать только файлыиз главной ветки

https://help.github.com/en/articles/configuring-a-publishing-source-for-github-pages

и невозможно настроить конкретную папку для файлов сборки.Я подумал о следующем решении:

Создайте ветку «dev» рядом с веткой master и сохраните файлы из папки dist в ветви master и поместите проект в ветку dev.

Я начал изучать использование Git на терминале и создал файл publish.sh , чтобы зафиксировать и перенести проект в репозиторий Github.

git add *
git commit -m "."
git push origin master

Как улучшить свой сценарий оболочки, чтобысделайте следующее (если возможно)

git add *
git commit -m "."

git push -- all files -- origin dev

git push -- all files of the dist folder -- origin master

Ответы [ 2 ]

2 голосов
/ 19 мая 2019

Возможно, добавьте дополнительное репо в папку dist, которая будет синхронизироваться с репозиторием Github Pages, содержащим только соответствующие файлы.

может сделать это с:

$ cd dist
$ git init
$ git remote add origin <github-pages-repo>
$ git add .
$ git commit -m 'initial commit'
$ git push origin master
1 голос
/ 21 мая 2019

Вы можете сделать это, имея две песочницы, указывающие на одно и то же хранилище GitHub, одну с извлеченной веткой dev, где вы изменяете файлы, и одну с проверенной веткой master, для обновления файлов dist .

Здесь я предполагаю, что <repo> уже существует на GitHub, но у него могут быть или не быть ветки.

Настройте ветку dev, в которой вы редактируете свой код:

git clone <repo> repo.dev
cd repo.dev
git checkout -b dev  # remove -b if origin/dev exists
# edit, commit, edit, commit, edit, commit
git push --set-upstream origin dev # remove --set-upstream if you removed -b above

Настройте ветку master, в которой вы публикуете свой код:

cd ..
git clone <repo> repo.dist
cd repo.dist
git checkout -b master # remove -b if origin/master exists
# copy the .vuepress/dist directory into this sandbox as required for deployment
git add .
git commit -m 'initial dist'
git push --set-upstream origin master # remove --set-upstream if you removed -b above

Теперь, в следующий раз, когда вы захотите внести изменения:

cd ../repo.dev
# edit, commit, edit, commit, edit, commit
# make vuepress update repo.dist/.vuepress/dist,
# possibly by symlinking it from your repo.dev sandbox.
cd ../repo.dist
git commit -a -m'updated dist'
git push

Теперь у этого решения есть именно то слабое место, о котором @NitsanAvni упомянул в комментарии к своему ответу: ветви master и dev не имеют ничего общего, даже их первоначальный коммит. Так что это может быть не лучше, чем наличие двух репозиториев, но при этом все держится вместе, что, как я вижу, может быть удобным.

Примечание: вам нужны две отдельные песочницы, даже если у вас есть только один удаленный репо, потому что в противном случае невозможно иметь обновленные представления одновременно для разных ветвей в одной песочнице.

...