# gitのrootディレクトリでスタート
$ git checkout --orphan gh-pages
$ git rm -rf .
$ git commit --allow-empty -m "Initializing gh-pages branch"
$ git push origin gh-pages
$ git checkout -f main
$ git submodule add -f -b gh-pages $(git config --get remote.origin.url) docs/build/html
$ git branch --show-current
main
$ cd docs/build/html
$ git branch --show-current
gh-pages
今回は、GitHub Pagesのセットアップを行います.
GitHub PagesはGitHubが提供する静的サイトホスティングサービスで,特定のブランチにMarkdownやHTMLファイルをプッシュするだけでウェブサイトとして公開することができます.
今回は例として,docs/build/html
を公開対象のディレクトリとします.
以下gitコマンドを順に説明していきます.
$ git checkout --orphan gh-pages
$ git rm -rf .
checkoutで新しいgh-pages
という名前のブランチを作成し,そのブランチに切り替えます.
--orphan
オプションは,新たに作成されるブランチが既存のコミット履歴を持たないようにするためのものです.
公開するサブモジュールをgh-pages
ブランチに切り出すため,main
ブランチのコミット履歴は不要です.
checkoutしただけだとファイルをtrackingしている状態なため,rm
コマンドで新たに作成したgh-pages
ブランチ上のすべてのファイルとディレクトリを削除します.
$ git commit --allow-empty -m "Initializing gh-pages branch"
$ git push origin gh-pages
空のコミットを作成しpushします.
$ git checkout -f main
元のmain
ブランチに戻ります.
-f
オプションは,変更を破棄して強制的にブランチを切り替えるためのものです.
$ git submodule add -f -b gh-pages $(git config --get remote.origin.url) docs/build/html
gh-pages
ブランチをdocs/build/html
というサブモジュールとして追加します.
これにより,main
ブランチからgh-pages
ブランチの内容を参照・更新することができます.
$ git branch --show-current
main
現在いるパスがgitのrootで,現在のブランチがmain
であることを確認します.
$ cd docs/build/html
$ git branch --show-current
gh-pages
サブモジュールディレクトリに移動し,そのディレクトリ内で現在のブランチがgh-pages
であることを確認します.
以上で,main
ブランチのdocs/build/html
ディレクトリをgh-pages
ブランチとして切り出すことができました.
gh-pages
ブランチの内容は,https://<username>.github.io/<repository>/
で公開されるため,docs/build/html
ディレクトリでHTMLファイルをpushすればそのHTMLファイルがホスティングされます.
この状態でdocs/build/html
ディレクトリを更新すると,gh-pages
ブランチの内容も更新されます.
また,gh-pages
ブランチの内容を更新すると,main
ブランチのdocs/build/html
ディレクトリの内容も更新されます.
このように,main
ブランチとgh-pages
ブランチの内容を同期させることができます.