git-worktree を使って時間のかかる処理を別の作業ディレクトリで行う

時間のかかる処理の実行中、別の作業を進められるようにする方法。備忘録。

時間のかかる処理の例

  • テストの実行中
  • デプロイの実行中

など。

git-worktree を使う

簡単に作業ディレクトリを増やせる。

$ cd ~/works/app
$ git worktree add ~/works/app_deploy
$ cd ~/works/app_deploy
$ git status
On branch app_deploy
nothing to commit, working tree clean

新しく作成された app_deploy の作業ディレクトリでも普通のリポジトリと同じように作業ができる。

注意点

両方の作業ディレクトリで同じブランチを使えない

作業ディレクトリを2つに増やしても、同じブランチは使えません。 別名のブランチを作る必要があります。

リポジトリは共通

リポジトリの内容は共通なので、git remotegit config を使う時は注意が必要です。

.gitignore のファイルは複製されない

git 管理されていないので当然なのですが、初めて git worktree を使うとハマるかも。
direnv を使っている場合などはシンボリックリンクを使うと良い。

$ cd ~/works/app_deploy
$ ln -s ~/works/app/.envrc .