git worktree

同じリポジトリの別のブランチを、別のフォルダに並べて開き、作業中の変更に触れずに作業する。

実行前の状態

main ブランチで README.md を書き換えている途中に、hotfix ブランチで急ぎの修正を頼まれた場面です。書きかけの変更は、コミットも退避もしたくありません。別のフォルダに hotfix を開けば、いまの作業をそのまま残して修正に行けます。

この状態を手元で作るなら、次の順に打ちます。git branch hotfix は、hotfix ブランチを作る操作です。

ターミナル

git init -q -b main hello
cd hello
echo "# hello" > README.md
git add README.md
git commit -q -m "README を作る"
git branch hotfix
echo "書きかけ" >> README.md

最小の例と結果

開きたいブランチ (hotfix) を、フォルダの置き場所と一緒に書きます。リポジトリの外に並べると、取り違えにくくなります。

ターミナル

git worktree add ../hello-hotfix hotfix
Preparing worktree (checking out 'hotfix')
HEAD is now at a1b2c3d README を作る

../hello-hotfix は、リポジトリの隣に作るフォルダです。このフォルダでは hotfix ブランチが開かれています。もとの hello フォルダの書きかけは、そのままです。

成功の確認

別のフォルダで開いているブランチには、git branch で + が付きます。

ターミナル

git branch
+ hotfix
* main

ターミナル

git -C ../hello-hotfix branch --show-current
hotfix

ターミナル

git status -s
 M README.md

最後の行は、もとのフォルダの書きかけが残っているという意味です。* は、いま居るフォルダのブランチです。

構文と主要オプション

書き方すること
git worktree add <フォルダ> <ブランチ名>既にあるブランチを、そのフォルダに開く
git worktree add -b <新しい名前> <フォルダ>新しいブランチを作って、そのフォルダに開く
git worktree list開いているフォルダと、そのブランチを一覧にする
git worktree remove <フォルダ>フォルダを閉じて消す
git worktree pruneフォルダを手で消したあとに残る、登録の跡を片付ける

失敗時の戻し方

同じブランチは 2 か所で開けない

main を開いているあいだに、別のフォルダで main を開こうとすると、断られます。別のフォルダで開きたいときは、git worktree add -b で新しいブランチを作ります。

フォルダを閉じるとき

作業が済んだら、git worktree remove ../hello-hotfix を打ちます。このコマンドは、フォルダを消します。コミットしていない変更が残っているフォルダは、断られて消えません。変更が要らないと決めたときだけ --force を付けます。

フォルダを Finder やエクスプローラーで消してしまったとき

登録の跡が残ります。git worktree prune で片付けます。ブランチは消えません。コミット済みの変更も、ブランチに残っています。

よくある疑問

clone し直すのとは何が違いますか

worktree は、履歴の置き場を 1 つ共有します。clone のように履歴をもう一度ためないので速く、片方でコミットすると、もう片方からも見えます。

作ったフォルダに node_modules はありますか

ありません。ブランチの中身のファイルだけが出てきます。依存の取得は、新しいフォルダで改めて打ちます。

stash とどちらを使いますか

すぐ戻ってくる短い寄り道なら、git stash で退避します。作業を残したまま、別の作業を長く続けたいなら worktree です。

確かめた Git の版 2.53.0確認日 2026年10月20日正本は Git 公式マニュアル (英語)

Git コマンド辞典の索引へ戻る