2017-02-05

git worktree で別ブランチの参照をこなす

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