

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
ワークツリー・とは?初心者が押さえる基礎と使い方
ワークツリーは、Git の機能のひとつで、リポジトリの追加の作業ディレクトリを作る仕組みです。通常は1つの作業ディレクトリと1つの作業ツリーだけですが、ワークツリーを使えば同じリポジトリの別の場所に別のブランチを作って作業を分けられます。これにより、複数の作業を同時に進めやすくなります。
たとえば、公開用のブランチと新機能のブランチを同時に開きたいとき、同じリポジトリを2つの作業ディレクトリで管理することができます。ワークツリーは複数の作業ディレクトリを共通の .git ディレクトリと連携させる仕組みです。これは「別々の作業環境を用意する」ことで作業ミスを減らす効果があります。
基本的な仕組みとポイント
Git は通常、1つのリポジトリと1つの作業ディレクトリで動きます。ワークツリーを使うと、別の場所に新しい作業ディレクトリを追加します。追加された作業ディレクトリは元のリポジトリと同じ .git ディレクトリを参照しますが、各作業ディレクトリは独立してブランチを切ったり、コミットを作成できます。これにより、作業の切り替えが速くなり、他のブランチの影響を受けずに作業できます。
基本的な使い方
実際にはコマンドを使って新しい作業ツリーを追加します。主なコマンドには git worktree add、git worktree list、git worktree remove、git worktree prune があります。以下の説明と表を見ながら覚えましょう。
| 意味 | 例 | |
|---|---|---|
| git worktree add | 新しい作業ツリーを追加する | git worktree add ../feature-abc feature-abc |
| git worktree list | 現在の作業ツリーの一覧を表示する | git worktree list |
| git worktree remove | 指定したパスの作業ツリーを削除する | git worktree remove ../feature-abc |
| git worktree prune | 不要な参照を整理する | git worktree prune |
使い方の実例
例として、main ブランチの作業ディレクトリとは別に、新機能のブランチを作って並行して修正します。まず main ブランチを保ったまま新しい作業ツリーを追加します。手順は次のとおりです。現在の作業をコミットした後、
新しいディレクトリに移動して 新しいブランチを作成します。これで同じリポジトリを複数の作業環境で扱える状態になります。
注意点とコツ
ワークツリーを使うと、.git ディレクトリは複数の作業ディレクトリと共有されます。多くの作業ツリーを同時に持つと管理が難しくなる場合があるため、現実的な数に留めましょう。また、作業ツリーの状態をこまめに把握する癖をつけてください。
まとめ
ワークツリーはリポジトリを柔軟に使い分けるための強力な機能です。使い所を理解すれば、ブランチ間の切り替えが速くなり、テストや公開前の準備をスムーズに進められます。初心者の方はまず git worktree add の基本形を試して、段階的に他のコマンドを覚えると良いでしょう。
ワークツリーの関連サジェスト解説
- git ワークツリー とは
- この記事では、 git ワークツリー とは何かを、初心者にも分かるように丁寧に解説します。ワークツリーは、1つの Git リポジトリから複数の作業ツリーを作れる機能です。通常は1つの作業ディレクトリで作業しますが、ワークツリーを使えば別の場所に別の作業ツリーを作成して、同じリポジトリの別のブランチを同時に作業できます。実際には、.git ディレクトリの外側に新しいディレクトリを作り、そこにもファイルをチェックアウトします。これにより、あるブランチを調整中に別のブランチを手早く比較したり、リリース前後の差分を並行して確認したりできるのです。基本的な使い方は、まず既存のリポジトリがある場所で作業を始め、次に git worktree list で現在の作業ツリーを確認します。新しい作業ツリーを作るには、git worktree add -b new-feature ../new-worktree または git worktree add ../new-worktree new-feature のようにコマンドを打ちます。これで新しいディレクトリに新しいブランチの作業ツリーが作成され、元のリポジトリは影響を受けずに作業を進められます。作業ツリー同士は同じリポジトリの履歴とオブジェクトを共有しますが、それぞれ独立したチェックアウトと作業ディレクトリを持ちます。完了したら git worktree remove /path/to/worktree で削除したり、git worktree prune で使われなくなった参照を整理したりします。ワークツリーは、二つ以上のブランチを同時に比較したいとき、長時間のビルドを別ツリーで試したいとき、あるいはリリース作業中に安定版と新機能版を切り替えたいときに特に有効です。なお、サブモジュールとは役割が違います。サブモジュールは別のリポジトリを参照しますが、ワークツリーは同じリポジトリを複数の場所で作業する点が大きな特徴です。
ワークツリーの同意語
- ワークツリー
- Git などのリポジトリにおける、実際の作業用ディレクトリ/木構造のこと。リポジトリの現在の作業コピーとして機能する領域。
- 作業ツリー
- Working Tree の日本語表現。リポジトリ内の作業用コピー全体を指す領域。
- 作業ディレクトリ
- Working Directory の日本語表現。ファイルを実際に編集するためのディレクトリ。
- 作業コピー
- リポジトリからチェックアウトされ、編集対象として用いられるファイル群のこと。作業用のコピーを指す言い方。
- ワーキングツリー
- Working Tree の表現ゆれ。発音は同じで、同じ意味を指す。
- ワーキングディレクトリ
- Working Directory の表現。実際にファイルが置かれているディレクトリ。
- 作業領域
- 作業を行うために確保された領域。リポジトリの作業コピーを包含する場合がある。
- 作業木
- 木構造を意味する『tree』を直訳した表現。技術文献で使われることがある。
- 作業木構造
- 木構造としての作業領域を指す表現。専門文献の中で見かけることがある。
- リポジトリの作業コピー
- リポジトリ内の作業用コピーを意味する説明的な言い方。
ワークツリーの対義語・反対語
- リポジトリ
- Gitのデータベース本体。履歴・オブジェクト・ブランチ情報などが格納され、実ファイルが展開されているワークツリーとは別物。
- インデックス
- 次のコミットに含める変更を一時的に集めておくステージングエリア。ワークツリーの実ファイル編集とは異なる準備領域。
- HEAD
- 現在の作業基点となる参照。直近のコミットを指す特別なポインタで、実ファイル群とは別の基準。
- ベアリポジトリ
- ワークツリーを持たないリポジトリ。実ファイルが展開されない分、ワークツリーの対比として挙げられるケースが多い。
- オブジェクトデータベース
- コミット・ツリー・ファイルの中身(オブジェクト)を格納する領域。実ファイルを直接扱うワークツリーとは役割が異なる保存領域。
ワークツリーの共起語
- リポジトリ
- Git が管理するコードと履歴の集合体。ブランチ、コミット、タグなどを含む基盤です。
- ブランチ
- 開発の分岐ライン。作業ツリーは通常、特定のブランチを追従します。
- HEAD
- 現在アクティブな参照。どのブランチの先端を指しているかを示します。
- インデックス(ステージングエリア)
- 次のコミットに含める変更を準備する領域。git add でファイルをここに追加します。
- コミット
- 変更を履歴として保存する最小単位。以前の履歴を辿れるようになります。
- 作業ツリー
- 実際のファイルが存在するローカルの作業コピー。現在の編集対象です。
- 差分(Diff)
- 作業ツリーとリポジトリの間の違いを表示します。何が変更されたかを把握できます。
- リモート
- ネットワーク上の別のリポジトリ。origin など、複数のリモートを設定できます。
- クローン
- リモートリポジトリをローカルに複製する操作です。
- フェッチ
- リモートの変更を取得してローカルの記録だけ更新する作業。
- プル
- リモートの変更を取得して現在の作業ツリーに統合します。
- プッシュ
- ローカルの変更をリモートへ送信して共有します。
- チェックアウト
- 別のブランチや特定のコミットを作業ツリーに展開する操作。
- マージ
- 異なるブランチの変更を現在のブランチに統合します。
- リベース
- 履歴を再構成して直線的な履歴に整える操作。協働作業で役立つことが多いです。
- git worktree
- 複数の作業ツリーを1つのリポジトリから並行して運用する機能。
- worktree add
- 新しい作業ツリーを追加するコマンド。
- worktree remove
- 不要になった作業ツリーを削除するコマンド。
- 複数作業ツリー
- 1つのリポジトリから同時に複数の作業ツリーを作成して並行作業を可能にする状態。
- 追跡ファイル
- Git が変更を監視するファイル。新規追加・変更・削除を追跡します。
- 未追跡ファイル
- Git がまだ管理していない新規ファイル。次のコミットには含まれません。
- 差分オプション
- diff の表示方法を制御する設定。
ワークツリーの関連用語
- ワークツリー
- リポジトリに含まれるファイルのうち、実際に作業して編集している場所。現在のブランチのファイルがここに展開され、編集結果がここに反映される。
- 未追跡ファイル
- ワークツリーにはあるが、Git がまだ追跡していない新規ファイル。git add で追跡対象に含めることができる。
- 変更済みファイル
- ワークツリーのファイルが、最後にコミットされた状態と異なっている状態。
- 追加済みファイル
- インデックス(ステージングエリア)に登録され、次のコミットに含まれる予定のファイル。
- インデックス(ステージングエリア)
- 次のコミットに含める変更を集めておく仮の領域。git add で更新される。
- HEAD
- 現在の作業基点となるブランチの最新のコミットを指すポインタ。
- ブランチ
- 独立した開発ラインを作るための、特定のコミットを指す移動可能なポインタ。
- リポジトリ
- Git が管理する全データの集合(コミット・ツリー・参照など)。通常は .git ディレクトリに格納される。
- ローカルリポジトリ
- 自分のパソコン上にあるリポジトリ。コミットの作成・変更の管理はここで完結できる。
- リモートリポジトリ
- ネットワーク上にある他のリポジトリ。共同作業の対象となる場所。
- origin
- デフォルトのリモート名。クローン時に自動で作成されることが多い。
- クローン
- 既存リポジトリを丸ごとコピーして新しい作業場所を作る操作。履歴も含まれる。
- バーリポジトリ
- 作業ツリーを持たないリポジトリ。サーバー用途などで使われる。
- チェックアウト
- 特定のブランチやコミットの状態にワークツリーを切り替える操作。
- git worktree
- 1つのリポジトリから複数のワークツリーを作成して同時に作業できる機能。
- .gitignore
- 追跡したくないファイルやパターンを記述する設定ファイル。
- タグ
- 特定のコミットに名前を付けて印をつける仕組み。リリース時に便利。
- コミット
- 変更を記録する最小単位。メッセージとともに履歴に保存される。
- コミット履歴
- これまでに作成されたコミットの並び。過去の変更を辿る手段。
- 参照(Refs)
- HEAD や origin/master など、コミットを指す名前の集まり。
- フェッチ
- リモートリポジトリの最新情報を取得してローカルのリモート追跡を更新する操作。
- プル
- フェッチを行い、その後現在のブランチへ自動的にマージする操作。
- プッシュ
- ローカルのコミットをリモートへ送って反映させる操作。
- マージ
- 2つ以上のブランチの変更を一つに統合する操作。衝突が起きる場合は手動解決が必要。
- リベース
- 現在のブランチの基点を別のブランチの先頭に移動して履歴を直線化する操作。
- コンフリクト
- マージやリベースの際、同じ箇所に別々の変更があり自動で解決できない状態。
- diff
- ファイルの差分を表示する機能。ワークツリーとインデックス、あるいはインデックスと HEAD の差を比較する。
- ファイル削除
- git rm でワークツリーとインデックスからファイルを削除する操作。
- git status
- 現在のワークツリーとインデックスの状態を一覧表示するコマンド。
ワークツリーのおすすめ参考サイト
- Gitの基本 ワークツリーとインデックス - Backlog
- 【Git】ワークツリーとは?【図解でわかり易く解説】 | tetoblog
- Gitの基本 ワークツリーとインデックス - Backlog
- リポジトリとは? データベースとの違いや種類、使用方法を解説



















