Как загрузить мой статический сайт AngularJS на страницы Github?
Я создал статический сайт с AngularJS и теперь хочу загрузить его как страницу Github. Я выполнил все инструкции здесь
https://help.github.com/articles/creating-project-pages-manually
Я могу создать новую ветвь с именем gh-pages
и git push origin gh-pages
все мое содержание просто отлично. Когда я перехожу к своему репо, я вижу новую ветвь gh-pages
со всеми файлами там, например:
https://github.com/siddhion/maxmythic_angular/tree/gh-pages
Проблема в том, что когда я пытаюсь просмотреть мой сайт на http://siddhion.github.io/maxmythic_angular/, я просто получаю страницу 404. Я предполагаю, что проблема в том, что у меня нет моего index.html
в верхнем каталоге. Он фактически находится в каталоге app
. Моя структура каталогов выглядит так, как будто я создал ее через Yeoman. Я предполагаю, что мне нужны все файлы на моем верхнем уровне. Или, может быть, я ошибаюсь в этом предположении?
Как я смогу получить статический сайт AngularJS правильно?
UPDATE
Я выполнил шаги, которые предоставил Стивен. Я добрался до шага 3, и я получил сообщение об ошибке:
$ git subtree push --prefix dist origin gh-pages
git push using: origin gh-pages
To [email protected]:siddhion/maxmythic_angular.git
! [rejected] 5db3233d7c0822eedc5500409ce6a2d4b73ad427 -> gh-pages (non-fast-forward)
error: failed to push some refs to '[email protected]:siddhion/maxmythic_angular.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and merge the remote changes
hint: (e.g. 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Затем я попробовал
$ git pull origin master
From github.com:siddhion/maxmythic_angular
* branch master -> FETCH_HEAD
Already up-to-date.
а затем снова попробовал git subtree push --prefix dist origin gh-pages
, но получил ту же ошибку.
На странице развертывания Yeoman я вижу в разделе Некоторые распространенные ошибки
Вы можете получить такую ошибку, как это. Обновления были отклонены, потому что подсказка вашего текущего ветки отстает. Вы можете решить это, нажав к пульту (будьте осторожны, он уничтожит все, что уже там).
Я опасаюсь заставлять subtree push
, потому что я новичок в git вообще и не уверен, что будет уничтожено. Я имею в виду, что в настоящее время у меня нет ветки gh-pages
на моем maxmythic_angular origin
удаленном, поэтому я не беспокоюсь об этом, но у меня есть ветки master
, gh-pages-old
и gh-pages-v1
. Они будут уничтожены, если я запустил git subtree push --prefix dist origin gh-pages
?
Ответы
Ответ 1
На сайте Yeoman существует для развертывания в ветке gh-pages с помощью git subtree
.
Из руководства...
Когда вы запускаете сборку grunt, она генерирует полностью оптимизированную версию вашего приложения в каталоге dist, которая может быть развернута.
Рекомендуемый способ развертывания каталога dist использует git поддерево.
-
Удалите каталог dist из файла .gitignore.
-
Добавьте каталог dist в ваш репозиторий и передайте его в свой проект.
git add dist && git commit -m "Initial dist subtree commit"
-
Как только каталог dist является частью вашего проекта, мы можем использовать поддерево git, чтобы настроить отдельный репозиторий на другой ветке. Примечание. Префикс должен быть относительным путем к вашему каталогу dist. Это предполагает, что dist находится в корневом каталоге.
git subtree push --prefix dist origin gh-pages
-
Теперь вы можете зафиксировать весь свой репозиторий в своей ветке по умолчанию (мастер) и всякий раз, когда вы хотите развернуть каталог dist, который вы можете запустить:
git subtree push --prefix dist origin gh-pages
Ответ 2
Я рекомендую использовать grunt-build-control. В руководстве по использованию есть именно ваш случай.
Я использовал его для развертывания user.github.io, где фактический код находится в ветке source
, а оптимизированная сеть страница построена в локальной папке dist
(в .gitignore), а затем развернута в ветку master
с помощью grunt buildcontrol:dist
buildcontrol: {
dist: {
options: {
remote: 'https://github.com/user/user.github.io',
branch: 'master',
commit: true,
push: true
}
}