Tips
現在のリポジトリのルートディレクトリにいることを確認
`git worktree`は、一つのGitリポジトリに対して複数の作業ディレクトリ(ワークツリー)を作成できる機能です。これにより、複数のブランチで同時に作業を進めたり、異なるブランチでのテストを並行して行ったりする際に、ブランチを頻繁に切り替える手間を省くことができます。
技術・言語・ツール: git worktree
git worktreeは、一つのGitリポジトリに対して複数の作業ディレクトリ(ワークツリー)を作成できる機能です。これにより、複数のブランチで同時に作業を進めたり、異なるブランチでのテストを並行して行ったりする際に、ブランチを頻繁に切り替える手間を省くことができます。
複数のブランチで並行作業!git worktreeで作業効率アップ
開発中に「このバグ修正を急いでやりたいけど、今進めている機能開発はコミットしたくない」「別のブランチでテストだけ動かしたい」といった状況はよくあります。git worktreeを使えば、メインの作業ディレクトリを汚さずに、別のディレクトリで別のブランチをチェックアウトし、独立して作業を進めることができます。これにより、ブランチ切り替えによるコンテキストスイッチのオーバーヘッドを大幅に削減し、開発体験を向上させます。
# 現在のリポジトリのルートディレクトリにいることを確認
pwd # /path/to/my-project
# feature-x ブランチで作業するための新しいワークツリーを作成
# /path/to/my-project-feature-x という新しいディレクトリが作成され、feature-x ブランチがチェックアウトされる
git worktree add ../my-project-feature-x feature-x
# hotfix ブランチで作業するための新しいワークツリーを別の場所に作成
# /path/to/hotfixes/my-project-hotfix という新しいディレクトリが作成され、hotfix ブランチがチェックアウトされる
mkdir -p ../hotfixes
git worktree add ../hotfixes/my-project-hotfix hotfix
# 既存のワークツリーの一覧を表示
git worktree list
# 不要になったワークツリーを削除
# ワークツリーのディレクトリ自体は削除されないため、別途 rm -rf で削除する必要があります
git worktree remove ../my-project-feature-x
# もしくは、ワークツリーのパスではなくそのワークツリー内のブランチ名を指定することもできます
# git worktree remove feature-x # (worktree list で表示されるパスとブランチ名がユニークであれば)
注意点やおすすめポイント:
- ブランチ切り替えの煩わしさ解消:
git stashやコミットせずにブランチを切り替える必要がなくなります。 - 並行作業の効率化: 複数の機能開発、バグ修正、レビューなどを同時にスムーズに進められます。
- ディスク容量の考慮: ワークツリーごとにリポジトリのオブジェクト(
.git/objects)は共有されますが、ワーキングディレクトリ内のファイルは独立して存在するため、ある程度のディスク容量は消費します。 .gitファイルの確認: 新しいワークツリーのディレクトリ内には、完全な.gitディレクトリではなく、メインの.gitディレクトリへのポインタとなる.gitファイルが作成されます。これにより、単一のリポジトリとして管理されています。git worktree removeは、.git/worktrees以下の管理エントリを削除するだけで、実際の作業ディレクトリは残ります。ディレクトリも削除したい場合は、別途rm -rfを実行してください。