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 remote
や git config
を使う時は注意が必要です。
.gitignore のファイルは複製されない
git 管理されていないので当然なのですが、初めて git worktree
を使うとハマるかも。
direnv を使っている場合などはシンボリックリンクを使うと良い。
$ cd ~/works/app_deploy $ ln -s ~/works/app/.envrc .