0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

git worktreeとの出会い

git worktree は一つのローカルリポジトリで作業ツリーを複数持つことができるGitの機能です。AI本格利用以前の自分は、git switchgit stashなどで十分だなと思ってました。しかし、AIを本格的に使っていく中で「Claude複数のそれぞれの作業を別ブランチでやりたい」「Claudeが動いているからこの差し込みタスクを人間がチラッとみるのが辛い」といったローカルリポジトリの競合が発生し再注目されるようになりました

git worktreeの文法

git worktreeでよく使うコマンドはこのようになっています。
すでに他のworktreeでcheckoutしているブランチはHEAD を複数作業ツリーで共有できないため、addでは追加できないことに注意する必要があります。

サブコマンド名 第一引数 第二引数 効果
add 生成する作業ツリーのパス チェックアウトしたいCommit・branch名 worktreeを作成する
remove 削除したい作業ツリーのPath 作業ツリーを削除しworktree管理から削除する
list 今のlocalリポジトリが管理している作業ツリーのリストを表示

git worktree活用法

git worktreeはメインで使う ~/リポジトリ名 は常にmain / masterの状態を維持して
普段はghとの組み合わせもする関係でclaude code でworktreeの生成まで任せているの使っていませんが以下のようなオリジナルworktreeコマンドを作ると管理が楽になるかもしれません。以下Bashでの例です。

if [ $# -ne 1 ]; then  
 echo "エラー: 引数が必要です"    
 exit 1
fi
BRANCH_NAME = "$1"
git pull

if [ $? -ne 0]; then
 echo "error: faild git pull"
 exit 1
fi

git worktree add ~/worktree/"$BRANCH_NAME" "$BRANCH_NAME"

ここでのポイントはaddのあとを ~/worktree と$HOMEからのPathにしていることです。これによって実行時のブレを最小限にしています。リポジトリ名を取得し、リポジトリ名もディレクトリ名に添えるとより使いやすくなると思います。

git worktreeも定期的にremovedするようclaudeに指示する or いい感じのシェルを描いてもらうことで元々あった管理の難しさと言ったものもだいぶ減ってきて使いやすくなったかなと思います。vscodeで見たくないworktreeまで表示されてしまうなどいくつか癖があるworktreeですが使ったことないというのは勿体無いので設定不要でできるworktree一度は使ってみてくださいね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?