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 を実行してください。