Konboi Note

git worktree を一時的に切り離す `git-wt-detach` コマンドを作った

· Konboi

はじめに

開発で Coding Agent を利用する際、git worktree で複数ブランチを同時に触れるのはとても便利である。
(ちなみに自分は k1LoW/git-wt を使って worktree の管理をしている。)

ただ、自分が仕事でよく触るリポジトリは Bazel x Java の環境で、IDE を使って debugger などを差し込んでコード確認することが多い。
このような場合だと、git worktree で新規に作ったディレクトリで都度ライブラリのダウンロードが走ったりするため面倒だった。

なので、以下のような手順をしていた。

  • 確認したいブランチの git worktree のディレクトリに移動
  • ブランチを切り替える
  • IDE を開いているベースのディレクトリに移動
  • 確認したいブランチに切り替える
  • 確認し、確認終了後に元に戻す

この面倒な作業を効率化するために、git-wt-detach を作った。(完全に git-wt をインスパイアしています)

GitHub - Konboi/git-wt-detach
Contribute to Konboi/git-wt-detach development by creating an account on GitHub.
GitHub · github.com
GitHub - Konboi/git-wt-detach

git-wt-detach

git-wt-detach は、同じブランチを複数 worktree で同時 checkout できない制約を回避するための CLI である。

git wt-detach <branch> を実行すると、以下を行う。

  • 指定ブランチを使っている別 worktree を見つける
  • 一時ブランチ(<branch>__wt_detach)を作る
  • その worktree 側を一時ブランチに切り替える
  • 元のブランチを現在のディレクトリで checkout できる状態にする

git wt-detach <branch> --revert で元の状態に戻せる。

使い方

# feature-x が別 worktree で checkout されている状態で実行
git wt-detach feature-x -c

実行結果

✔ Found worktree: ../repo-wt-feature
✔ Created temp branch: feature-x__wt_detach
✔ Switched worktree branch
✔ Branch detached: feature-x
✔ Checked out: feature-x

確認が終わったら戻す。

git wt-detach feature-x --revert

さいごに

git worktree で複数ブランチを触る運用は便利だが、IDE やキャッシュ前提の開発フローだと「一時的に同じブランチをベース側で触りたい」場面がある。

そのときのディレクトリ移動とブランチ切り替えの手間を減らすために git-wt-detach を作った。しばらく運用しつつ、必要なら改善していく。