Git Worktree
最終更新
git worktree を使うと、1 つのリポジトリで複数の作業ディレクトリを同時に持ち、それぞれを別々のブランチにできます。ブランチを切り替えるために作業を stash する代わりに、別のフォルダで別のブランチをチェックアウトします - PR をレビューしたり、ホットフィックスを実行したり、あるブランチを編集しながら別のブランチをビルドしたりでき、すべてが同じ .git 履歴を共有します。
これらをターミナルプレイグラウンドで試してみましょう - ブラウザ内の本物のシェルで、インストールは不要です。
構文
| Command | What it does |
|---|---|
git worktree add ../hotfix hotfix | 隣接するフォルダに hotfix をチェックアウトする |
git worktree add -b new ../new | ブランチとそのための worktree を作成する |
git worktree list | すべての worktree とそのブランチを一覧表示する |
git worktree remove ../hotfix | worktree を削除する |
git worktree prune | 古くなった worktree のエントリを整理する |
実践例
フィーチャーブランチを乱さずに main のバグを修正する。
| Step | Command | Result |
|---|---|---|
| 1 | git worktree add ../fix main | main を ../fix にチェックアウトした |
| 2 | ../fix で修正してコミットする | main でホットフィックス完了 |
| 3 | git worktree remove ../fix | 後片付け; フィーチャーブランチは手つかずのまま |
git worktree に関するよくある質問
git worktree とは何ですか?
worktree は、同じリポジトリに紐づいた追加の作業ディレクトリで、別のブランチやコミットにチェックアウトされます。複数のブランチを別々のフォルダで同時にチェックアウトした状態にでき、すべてが 1 つの
.git 履歴を共有します - そのため 2 つのブランチで同時に作業するために stash やクローンをする必要がありません。worktree はどうやって追加しますか?
git worktree add <path> <branch> を実行します。たとえば git worktree add ../hotfix hotfix です。Git はそのブランチを新しいフォルダにチェックアウトします。同時に新しいブランチを作成するには git worktree add -b <newbranch> <path> を使います。ブランチを切り替える代わりに worktree を使うべきなのはいつですか?
ブランチの切り替えが支障になる場合に使います - コミットしていない作業がある、中断したくない長いビルドがある、または 2 つのブランチを並べて比較する必要がある、といった場合です。worktree は現在のブランチに触れることなく、別のブランチを専用のフォルダで提供します。
worktree はどうやって削除しますか?
git worktree remove <path> を実行します。フォルダを手動で削除した場合は、git worktree prune を実行して古い管理情報を整理します。メインの worktree (元のリポジトリフォルダ) は削除できず、追加した余分なものだけを削除できます。これをオンラインで練習できますか?
はい。ターミナルプレイグラウンドを開けば、ブラウザ内の本物のシェルで
git worktree を実行できます - インストールは不要です。Coddy の無料インタラクティブ Git コースでも、ブランチのワークフローを段階的に扱っています。