Github: зеркальное отображение gh-страниц для мастера
Я разрабатываю плагин jQuery, который размещается на GitHub. В него включена демонстрация, которую я вручную копирую и нажимаю на ветку gh-pages
, что я хотел бы сделать, это иметь его так, когда я нажимаю изменение в master
он автоматически нажимается на gh-pages
, или, по крайней мере, настройки, где они отражаются.
Я уже видел этот вопрос, но не уверен, что он действительно отвечает на мой вопрос в отношении этих требований:
- я использую башня, Я не возражаю использовать терминал (Mac)для внесения изменений в конфигурацию, если решение работает с этим графическим интерфейсом.
- Я только хочу, чтобы это "зеркальное отображение" на некоторых репозиториях, а не на всех из них на моей машине.
Ура
8 ответов:
добавить следующие 2 строки на
.git/config
:push = +refs/heads/master:refs/heads/gh-pages push = +refs/heads/master:refs/heads/master
каждый раз, когда вы
push
он будет автоматически передавать мастер на GH-страниц, а также. Я использую это для jQuery Lifestream project.
не делайте то, что предлагает денбюззе выше!! Знак + (плюс) в толчке заставляет его спокойно принимать обновления без fastforward. Я обнаружил на своем горьком опыте, что это может безвозвратно привести к потере работы, приводя к оборванным коммитам. Простое удаление знаков плюс делает этот подход более безопасным.
push = refs/heads/master:refs/heads/gh-pages push = refs/heads/master:refs/heads/master
теперь вместо того, чтобы вызывать обновление силы это вызовет предупреждение и вытяните предложение
To https://github.com/someuser/repo.git ! [rejected] master -> gh-pages (fetch first) ! [rejected] master -> master (fetch first) error: failed to push some refs to 'https://github.com/someuser/repo.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
я добавляю дополнительные пояснения к @denbuzze и @MCSDWVL ответы.
если вы хотите, чтобы подтолкнуть обоих к
master
иgh-pages
автоматически при каждом запускеgit push origin
, вы, вероятно, хотите добавить Refspec в конфигурацию git вашего РЕПО.Итак, согласно git-scm book, вы можете добавить два RefSpecs, добавив два
push
значения в конфигурационном файле РЕПО.git/config
:[remote "origin"] url = https://github.com/<github_user>/<repo_name> fetch = +refs/heads/*:refs/remotes/origin/* push = refs/heads/master:refs/heads/master push = refs/heads/master:refs/heads/gh-pages
это вызовет a
git push origin
to:
- нажмите на локальный
master
ответвление на пультmaster
филиала- нажмите на локальный
master
ответвление на пультgh-pages
филиалапо умолчанию.
Примечание использование
+
перед тем, как спецификация вызывает принудительный толчок к РЕПО. Используйте его с осторожностью:формат refspec является необязательным
+
, далее следует<src>:<dst>
, где<src>
- это шаблон для ссылок на удаленной стороне и<dst>
где эти ссылки будут написаны на местном уровне. The+
говорит Git обновить ссылку, даже если это не быстрая перемотка вперед.
Я лично хотел бы обернуть это в псевдоним:
alias gpogh="git checkout gh-pages && git merge master && git push origin gh-pages && git checkout -"
Это отражает ваш мастер
gh-pages
, нажимает на github, а затем переключает назад предыдущую ветку, над которой вы работали.
commit и push мастера..
затем :
git checkout gh-pages // -> go to gh-pages branch git rebase master // bring gh-pages up to date with master git push origin gh-pages // commit the changes git checkout master // return to the master branch
обновление:GitHub теперь позволяет публиковать страницы из любой ветви и каталога, который вы хотите.
мне было намного проще использовать
gh-pages
отделение как мастер. В "Мастере" нет ничего волшебного, это просто еще одно название ветви. Там и что-то волшебное в GH-страницах, потому что именно там GitHub ищет индекс.html для обслуживания вашей страницы.подробнее мой другой ответ на это тема.
используя
gh-pages
как мастер также проще, чем поддеревья, которые проще, чем зеркальное отображение. Вы могли бы использоватьgit subtree
как рассказали здесь или здесь: если у вас есть каталог, который содержит демо-версию, вы можете нажать, что каталогgh-branch
С одной командой. Допустим, вы называете каталогgh-pages
чтобы прояснить ситуацию. Затем после того, как вы зафиксировали и подтолкнули свои изменения кmaster
запустите это обновление гр-страницы:git subtree push --prefix gh-pages origin gh-pages
проблема в том, если ваши файлы
gh-pages
обратитесь к файлам в других каталогах за его пределами. Символические ссылки не работают, так что вам придется скопировать файлы в каталоге, который служит в качестве gh-страниц.если вы использовать
gh-pages
в качестве мастера, эта проблема не возникает.