2011-01-20 4 views
46

У меня есть репо на GitHub. Недавно я открыл страницы GitHub, и я хочу их использовать.
Я хотел бы создать эту новую ветку, а затем, когда мне нужно, либо зафиксировать на ветке master, либо на ветке gh-pages.git branch: gh-pages

Как я могу это сделать? Должен ли я создать другую папку внутри моего репо?

+0

'origin' не является филиалом, это удаленный. Вы имеете в виду «мастер». – Dustin

+0

Ах да, вы правы. Я отредактирую. – rubik

+0

См. [Мой ответ] (http://stackoverflow.com/a/29616287/946850) и [writeup] (http://krlmlr.github.io/git-subbranch) для решения, которое состоит из создания клонировать в поддиректории рабочей копии. – krlmlr

ответ

25

Вы могли бы найти этот учебник полезным:

Setup GitHub Pages "gh-pages" branch and "master" branch as subfolders of a parent project folder ("grandmaster").

Для меня этот подход кажется более простым, чем когда-либо делать git checkout gh-pages каждый раз, когда вы хотите редактировать содержимое gh-страниц. Дайте мне знать, что вы думаете^_^

Редактировать: Я обновил ссылку на учебник - спасибо @Cawas. Старая tuotial (не рекомендуется) был https://gist.github.com/825950

+1

@ rubik на самом деле лучше использовать второе предложение от того же автора: https://gist.github.com/833223 – cregox

+0

GitHub только что разрешил использование [любой ветки и каталога в качестве источника для документов] (https: // github.com/blog/2228-simpler-github-pages-publishing). Вам больше не нужно использовать 'gh-pages'. –

7

На локальном клоне сделать,

git symbolic-ref HEAD refs/heads/gh-pages 
rm .git/index 
git clean -fdx 

Затем git checkout gh-pages и писать свои страницы. git push origin gh-pages, когда вы будете готовы опубликовать страницы.

+0

Да, но где я помещаю свои страницы? Как git знает, какие страницы помещать в gh-страницы? – rubik

+2

'git checkout gh-pages' означает, что вы переключились на ветвь с именем« gh-pages ». Любые изменения, которые вы совершаете для этой ветви, собираются github для создания ваших страниц github. Чтобы вернуться к ветке «master» (предположительно, вашему исходному коду), выполните «git checkout master». –

+0

related: http://stackoverflow.com/questions/847609/create-a-git-symbolic-ref-in-remote-repository – cregox

32

В более поздних версиях git есть альтернатива методу git symbolic-ref, который объяснил Чандру. Это позволяет избежать необходимости использовать команды нижнего уровня.

git checkout --orphan gh-pages 
git rm -rf . 
+0

Я этого не понимаю. Как это связано с символом-ref? – cregox

+0

@Cawas Раньше единственным способом сделать это было использование 'git symbolic-ref', как в ответе Чандру. Теперь 'git checkout -orphan' является правильным способом. – Arrowmaster

+0

но, @arrow, когда я вижу документы об обоих, они, похоже, не делают то же самое вообще! about 'symbolic-ref' говорит:« Символьные ссылки теперь устарели и символические ссылки используются по умолчанию * », в то время как« orphan »говорит« * Это может быть полезно, когда вы хотите опубликовать дерево из коммита без раскрытия его полная история * ". Для меня все наоборот. Вы создаете полностью разделенную ветку вместо того, чтобы сделать зеркало другого! – cregox

1

Создание проекта страницы вручную

Добавление нового набора страниц для проекта вручную является простой процесс, если вы привыкли к использованию командной строки мерзавец.

https://help.github.com/articles/creating-project-pages-manually

-1

Ваши GH-страницы и мастер-ветви, имеющие ТОЧНО такую ​​же структуру папок? Если это так, почему вы хотите иметь две ветки? просто поддерживайте одну ветвь gh-pages! но если по какой-то причине вы хотите иметь обе ветви, которые постоянно синхронизируются, то лучше всего использовать git rebase. Смотрите здесь:
http://lea.verou.me/2011/10/easily-keep-gh-pages-in-sync-with-master/

Вы также можете вишневые выбрать только нужные вам файлы от мастера и толкать их на Gh-страницы с помощью специального использования случая git checkout. Смотрите здесь:
http://oli.jp/2011/github-pages-workflow/#gh-pages-workflow
http://nicolasgallagher.com/git-checkout-specific-files-from-another-branch/

Достигнув решать с той же проблемой, я пришел, чтобы найти, что GH-страницы, как правило, в конечном итоге, другой кодовой базы, чем мастер. Другими словами, gh-страницы должны включать только содержимое папки dist/build/publish вашего проекта, тогда как мастер будет включать ваши файлы конфигурации, неустановленные сценарии и стили и т. Д.

Мое предложение было бы создать gh-pages как ветвь --orphan, и включать в нее только готовый к публикации материал. Вы должны клонировать от своего хозяина в другом локальном каталоге, используйте git checkout --orphan gh-pages для создания gh-страниц, а затем удалите все ненужные файлы, используя git rm -rf ..Оттуда вы можете продолжить и нажать на gh-страницы после добавления ваших файлов только для публикации. См GitHub документы для получения дополнительной информации:
https://help.github.com/articles/creating-project-pages-manually/

Успехов

+3

GitHub только что разрешил использование [любой ветки и каталога в качестве источника для документов] (https://github.com/blog/2228-simpler-github-pages-publishing). Вам больше не нужно использовать 'gh-pages'. –

0

Типичный способ для переключения ветвей: git checkout master, если вы хотите работать на хозяина и git checkout gh-pages, если вы хотите работать на gh-pages.

Начиная с git 2.5 вы можете одновременно проверять обе ветви (в разных каталогах). См. https://github.com/blog/2042-git-2-5-including-multiple-worktrees-and-triangular-workflows. Настройка через git worktree add -b gh-pages ../gh-pages origin/gh-pages.

Бонус: Если содержимое подкаталога вашего master checkout составляет gh-pages, используйте скрипт, указанный в https://github.com/X1011/git-directory-deploy.

1

Есть еще одно решение вашей проблемы: Забудьте о gh-pages и разветвлении; Поместите свои статические файлы, которые должны быть поданы внутри каталога /docs, а затем перейдите в настройки вашего проекта и сообщите github, чтобы он обслуживал /docs.

Для получения дополнительной информации посмотрите на this

2

Опубликовать статический сайт, как это:

git subtree push --prefix www origin gh-pages 

Где www директория док корень, в котором ваши статические файлы. Ваш стационарный сайт в настоящее время в прямом эфире: https://[user_name].github.io/[repo_name]/

 Смежные вопросы

  • Нет связанных вопросов^_^