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 originto:
- нажмите на локальный
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в качестве мастера, эта проблема не возникает.