git worktreeでGitHub Pagesの管理を楽にする

書いてから気づいた...

イマドキのGitHubはgh-pagesブランチだけでなく、 masterブランチの/docsディレクトリ以下をドキュメントとする 機能があった。

f:id:rkmathii:20161106133450p:plain

git worktreeを使わずとも最初からこれで良かった…( ˘ω˘)


やりたかったこと

  • ドキュメントの公開をGitHub Pagesで行おうとした際に、イチイチ
    • masterブランチからgh-pagesブランチに移動して、
    • gh-pagesブランチでドキュメント書いて、
    • git commit & git pushして、
  • という手順が面倒だったのでどうにかしたかった。

git v2.5以降が導入されているならばgit worktreeというコマンドを使うことで「特定のディレクトリ以下を別のブランチとして扱う」ことができるので、これで「masterブランチの/documentsディレクトリ以下をgh-pagesブランチとして扱う」ということができるようになる。

手順例

# よしなにリポジトリを準備する
$ git init git-worktree-gh-pages
$ touch README.md && git add README.md && git commit -m 'Initial commit'

# gh-pagesブランチをチェックアウト
$ git checkout -b gh-pages

# masterブランチに含まれていたファイルを消しつつ、ドキュメント用のindex.htmlを追加してコミット
$ git rm *
$ touch index.html
$ git add index.html && git commit -m 'Add index.html'

# masterブランチをチェックアウトして、/documentsディレクトリをgh-pagesとして使うようにする
$ git checkuot master
$ git worktree add documents gh-pages
$ git add documents && git commit -m 'Add worktree documents (gh-pages branch)'

こうすることで、documentsディレクトリ以下に移動したときは自動的にgh-pagesブランチに対して操作していることになるので、gh-pagesブランチをチェックアウトすることなくそのままdocumentsディレクトリ以下に対してドキュメントを生成することでGitHub Pagesを作ることができる。