Github: зеркальное отображение gh-страниц для мастера


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

Я уже видел этот вопрос, но не уверен, что он действительно отвечает на мой вопрос в отношении этих требований:

  1. я использую башня, Я не возражаю использовать терминал (Mac)для внесения изменений в конфигурацию, если решение работает с этим графическим интерфейсом.
  2. Я только хочу, чтобы это "зеркальное отображение" на некоторых репозиториях, а не на всех из них на моей машине.

Ура

8 67

8 ответов:

git checkout gh-pages
git merge master
git push origin gh-pages

добавить следующие 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:

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

или вы можете просто использовать cmd ниже, это подтолкнет вашу локальную главную ветвь к главной ветви gh-pages. git push -f origin master:gh-pages