Git 2.5.0 から git worktree コマンドで「今とは別」のブランチを他のディレクトリーに書き出すことが可能になった。
$ git worktree add path branch
例えば、feature/fix-a で作業中に hotfix/2.1.1 のコードが読みたくなったとする。その場合、こんな風にする。
$ cd ~/project/foo $ git branch develop * feature/fix-a hotfix/2.1.1 master $ git worktree add ../foo-hotfix hotfix/2.1.1
これで ~/project/foo-hotfix に hotfix/2.1.1 ブランチの内容がコピーされた。
このコマンドの面白いところは、リポジトリーをコピーしているのではないところ。リポジトリーはあくまで一つで、別の worktree を作っている。worktree はリポジトリーにひも付いた作業場のこと。git init や git clone した後に「作業をしている場所」のこと。
リポジトリーが同じなので、worktree コマンドで作った場所 (上の例では ~/project/foo-hotfix) でのコミット等は自動的に ~/project/foo でも参照することができる。git merge など不要。
複数のブランチを参照したい時、複数のブランチをほぼ同時に編集したい時に便利。
No comments:
Post a Comment