GitHubに置いているリポジトリの公開ページをGitHub Pagesで作る場合に、どうやって管理したらいいか自分のやり方をメモ。
- ‘16/08/26:
gh-pages
ブランチに入れなくても、master
のdocs
ディレクトリ内に置けばGitHub pagesとして見れるようになったらしい Publish Your Project Documentation with GitHub Pages
gitで複数ブランチを編集する方法
GitHubでページをホストできるGitHub Pagesで、各リポジトリごとのページはgh-pages
というブランチの内容がアカウント名.github.io/リポジトリ名
に公開される。
普段はmaster
だかdevelop
ブランチで作業していて、ビルドで生成した内容をgh-pages
で公開したい場合に、git
の使い方でいろいろ方法がある:
git branch
でブランチを切り替えて修正を反映させる- 別フォルダに
gh-pages
ブランチをチェックアウトしてそちらに更新内容を反映させる git subtree
を使うgit worktree
を使う
1はそれぞれのブランチを同時に参照できない、2はフォルダを別の場所に作らないといけないのが面倒、3はよく知らない、で4の方法でやることにする。
gh-pagesブランチを親なしで作成する
まずは対象となるgh-pages
ブランチを作成する。ブランチを作るときに通常であればgit branch
またはgit checkout -b
などとして作成するが、そうした場合には現在のコミットが親になってしまう。GitHub Pagesに公開したいブランチの内容は作業用のブランチとはまったく別の内容(成果物のHTMLなどだけで、ビルド用の設定ファイルやソースは必要ない)なので、現在のコミットからファイルを引き継がないほうが都合がよい。
gitでは--orphan
で親のない、独立したブランチを作成できる:
$ git checkout --orphan gh-pages # gh-pagesを親なしのブランチとして作成 |
git worktree
git-worktreeを使うと、指定のブランチをサブディレクトリ以下にチェックアウトすることができる。これを使うと作業用のブランチと公開用のgh-pages
ブランチを切り替えずに、同時に編集することができるようになる。
$ git checkout master |
上記の例だとdist
ディレクトリ以下にgh-pages
ブランチの内容(index.html
)が格納される。
$ tree |
gh-pagesの更新
worktree
で指定したディレクトリ内にgh-pages
ブランチの内容がチェックアウトされているので、その中のファイルを修正してコミット、プッシュでGitHubに上げると、GitHub Pagesに反映される。