Open3

git worktree

Tatsuya SatoTatsuya Sato

worktreeを作成したときにブランチ上どう見えているか確認する。

$ git branch
* main
$ git worktree add ../feature_a
Preparing worktree (new branch 'feature_a')
HEAD is now at 1fcf9da feat: Implement basic TODO application
$ git branch
+ feature_a
* main
$ git worktree list
/path/to/repo  1fcf9da [main]
/path/to/feature_a   1fcf9da [feature_a]

git worktree addの第2引数にローカルブランチ名を指定することもできるが、しないと現在のブランチから第1引数で指定したディレクトリ名と同じブランチ名を作ってワークツリーを作成する。

Tatsuya SatoTatsuya Sato

feature_aワークツリーで作業する。

$ cd ../feature_a
$ touch foo.txt
$ git add ./foo.txt
$ git commit -m "Add foo.txt"
[feature_a d42433b] Add foo.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 foo.txt
$ git log --oneline
d42433b (HEAD -> refs/heads/feature_a) Add foo.txt
1fcf9da (refs/heads/main) Initial Commit
Tatsuya SatoTatsuya Sato

作業後に不要になったワークツリーを削除する。

$ cd ../repo
$ git worktree remove ../feature_a
$ git branch
  feature_a
* main
$ git log --oneline feature_a
* d42433b (refs/heads/feature_a) Add foo.txt
* 1fcf9da (HEAD -> refs/heads/main) Initial Commit
$ git worktree list
/path/to/repo  1fcf9da [main]