GitHub: отражение GH-страниц для освоения
-
24-10-2019 - |
Вопрос
Я разрабатываю плагин jQuery, который проводит на GitHub. У него есть демонстрация, в которой я вручную копирую и подталкиваю к филиалу gh-pages
, то, что я хотел master
он автоматически наставил gh-pages
, или, по крайней мере, настройка, где они отражаются.
Я уже видел это вопрос но не уверен, действительно ли это отвечает на мой вопрос в отношении этих требований:
- я использую Башня, Я не против использовать терминал (Mac) для внесения изменений в конфигурацию, если решение работает с этим графическим интерфейсом.
- Я хочу только это «зеркальное зеркало» на определенных репо, а не на всех их на моей машине.
Ваше здоровье
Решение
git checkout gh-pages
git merge master
git push origin gh-pages
Другие советы
Добавить следующие 2 строки в [remote "origin"]
раздел .git/config
:
push = +refs/heads/master:refs/heads/gh-pages
push = +refs/heads/master:refs/heads/master
Каждый раз, когда вы push
Он также автоматически подтолкнет мастер к GH-страницам. Я использую это для JQuery LifeStream Project.
Не делайте то, что Денбуззе предлагает выше!! + (Плюс знак) в толчке заставляет его тихо принимать необработанные обновления. Я узнал, как это может безвозвратно привести к потере работы, что привело к висящим коммитам. Простое удаление знаков плюса делает этот подход более безопасным.
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 Книга, вы можете добавить два 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
Это вызовет git push origin
к:
- Толкнуть местный
master
ветвь в пультmaster
ответвляться - Толкнуть местный
master
ветвь в пультgh-pages
ответвляться
по умолчанию.
Примечание: используя +
Перед тем, как спецификация заставляет заставлять толкать к репо. Используйте его с осторожностью:
Формат RefSpec является необязательным
+
, с последующим<src>:<dst>
, куда<src>
это шаблон для ссылок на удаленной стороне и<dst>
где эти ссылки будут написаны на местном уровне. А+
Позволяет GIT обновить ссылку, даже если она не является быстрым.
Я лично люблю обернуть это в псевдоним:
alias gpogh="git checkout gh-pages && git merge master && git push origin gh-pages && git checkout -"
Это отражает вашего хозяина gh-pages
, толкает на GitHub, затем переключает обратно предыдущую ветку, над которой вы работали.
Или вы можете просто использовать CMD ниже, это подтолкнет вашу локальную главную ветвь в главную ветвь GH-Pages.git push -f origin master:gh-pages
совершить а также толкать освоить..
тогда :
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 ищет index.html, чтобы служить вашей странице.
Читать больше в мой другой ответ на эту тему.
С использованием gh-pages
Поскольку мастер также проще, чем подтережи, которые легче, чем зеркалирование. Вы могли бы использовать git subtree
как описано здесь или же здесь: Если у вас есть каталог, который содержит вашу демонстрацию, вы можете подтолкнуть этот каталог в gh-branch
с одной командой. Допустим, вы называете каталог gh-pages
чтобы прояснить ситуацию. Затем после того, как вы совершили и подтолкнули свои изменения в master
, Запустите это, чтобы обновить GH-Pages:
git subtree push --prefix gh-pages origin gh-pages
Проблема в том, если ваши файлы в gh-pages
Обратитесь к файлам в других каталогах вне его. Символики не работают, поэтому вам придется копия Файлы в каталоге, который служит GH-страницами.
если ты использовать gh-pages
как мастер, эта проблема не произойдет.