Подтвердить что ты не робот

Github: зеркалирование gh-страниц для освоения

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

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

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

Приветствия

4b9b3361

Ответ 1

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

Ответ 2

Добавьте следующие 2 строки в раздел [remote "origin"] .git/config:

push = +refs/heads/master:refs/heads/gh-pages
push = +refs/heads/master:refs/heads/master

Каждый раз, когда вы push, он автоматически нажимает master на gh-страницы. Я использую это для проекта jQuery Lifestream.

Ответ 3

Не делайте то, что предлагает denbuzze выше! Знак + (плюс) в нажатом состоянии позволяет спокойно принимать немедленные обновления. Я обнаружил, что это может безвозвратно заставить работу быть потерянной, приводя к оборванным. Простое удаление плюсовых знаков делает это более безопасным.

push = refs/heads/master:refs/heads/gh-pages
push = refs/heads/master:refs/heads/master

теперь вместо того, чтобы вызвать обновление силы, это вызовет предупреждение и предложение pull

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.

Ответ 4

Я добавляю дополнительные пояснения к ответам @denbuzze и @MCSDWVL.

Если вы хотите автоматически нажимать оба на master и gh-pages каждый раз при запуске git push origin, вы, вероятно, захотите добавить Refspec в конфигурацию вашего репо git.

Итак, согласно git -scm book, вы можете добавить два RefSpecs, добавив два значения push в конфигурационный файл repo .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

Это приведет к git push origin:

  • Нажмите локальную ветвь master на удаленную ветвь master
  • Нажмите локальную ветвь master на удаленную ветвь gh-pages

по умолчанию.

Примечание: с помощью + перед тем, как spec вызывает принудительное нажатие на репо. Используйте его с осторожностью:

Формат refspec является необязательным +, за которым следует <src>:<dst>, где <src> - это шаблон для ссылок на удаленной стороне, а <dst> - это то, где эти ссылки будут записываться локально. + сообщает git обновить ссылку, даже если она не является быстрой перемоткой вперед.

Ответ 5

Мне лично нравится обернуть это в псевдоним:

alias gpogh="git checkout gh-pages && git merge master && git push origin gh-pages && git checkout -"

Это отражает вашего мастера до gh-pages, толкает на github, затем переключает предыдущую ветвь, над которой вы работали.

Ответ 6

зафиксировать и нажать, чтобы выполнить мастер.

тогда:

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

Ответ 7

UPDATE: GitHub теперь позволяет публиковать страницы из любой отрасли и каталога, который вы хотите.


Мне было гораздо легче использовать ветвь gh-pages как master. Там нет ничего волшебного о "хозяине"; это просто другое название ветки. В gh-страницах есть что-то волшебное, потому что там, где GitHub ищет index.html для обслуживания вашей страницы.

Подробнее в мой другой ответ по этому вопросу.

Использование gh-pages в качестве мастера также проще, чем поддеревья, которые проще, чем зеркалирование. Вы можете использовать git subtree, как описано здесь или здесь: если у вас есть каталог, содержащий вашу демонстрационную версию, вы можете нажать эту директорию на gh-branch с помощью одной команды. Скажем, вы назовете каталог gh-pages, чтобы все было ясно. Затем после того, как вы совершили и нажали свои изменения на master, запустите это, чтобы обновить gh-страницы:

git subtree push --prefix gh-pages origin gh-pages

Проблема в том, что ваши файлы в gh-pages относятся к файлам в других каталогах вне его. Символы не работают, поэтому вам придется копировать файлы в каталог, который служит в качестве gh-страниц.

Если вы используете gh-pages как мастер, эта проблема не будет возникать.

Ответ 8

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