Я хочу начать использовать страницы GitHub для моего веб-сайта проекта. Для этого просто требуется ветвь (поддерево) с именем gh-pages
в репо и служит для ее содержимого. Проблема в том, что часть веб-сайта (руководство, журнал изменений, страница загрузки...) автоматически генерируется системой сборки, поэтому я хочу найти лучший способ зафиксировать эти изменения в ветке gh-pages
, в то время как основное репо остается на master
(или где угодно).
Чтобы зафиксировать ветвь gh-pages
, я мог написать script, который клонирует репо во временный каталог, вносит изменения, фиксирует их, а затем возвращает их обратно в основное репо. Но это звучит как процесс, подверженный ошибкам, поэтому я надеюсь, что есть более простой способ.
Друг предположил, что я могу добавить ветвь gh-pages
в качестве подмодуля в основной репозиторий. Я провел небольшой эксперимент, но он не работает:
$ git init main
Initialized empty Git repository in /tmp/main/.git/
$ cd main
$ touch main.txt
$ git add .
$ git commit -m'Initial commit in main branch.'
[master (root-commit) 1c52a4e] Initial commit in main branch.
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 main.txt
$ git symbolic-ref HEAD refs/heads/gh-pages
$ rm .git/index
$ git clean -fdx
Removing main.txt
$ touch index.html
$ git add .
$ git commit -m'Initial commit in website branch.'
[gh-pages (root-commit) 94b10f2] Initial commit in website branch.
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 index.html
$ git checkout master
Switched to branch 'master'
$ git submodule add -b gh-pages . gh-pages
repo URL: '.' must be absolute or begin with ./|../
$ git submodule add -b gh-pages ./ gh-pages
remote (origin) does not have a url defined in .git/config
Я новичок в подмодулях; конечно, сделали некоторые чтения, но я не понимаю этого поведения. Зачем нужен пульт origin
? В идеале я хочу, чтобы подмодуль всегда ссылался на репо, в котором он находится, поэтому он не должен ссылаться на origin
или на любые другие пульты. Если кто-то клонирует репо и запускает git submodule init ; git submodule update
, он должен идеально вытащить из вновь клонированного репо.
Можно ли добавить репо как сам подмодуль? Желательно? Есть ли какие-то подводные камни, о которых я должен знать? Есть ли лучший способ достичь того, что я хочу?