作業ディレクトリしたい(git worktree add

// 作業ディレクトリの作成
$ cd プロジェクト名
$ git worktree add ../ディレクトリ名 ブランチ名
$ git worktree list

// 作業ディレクトリに移動
$ cd ../ディレクトリ名

// ソースコードの修正
$ git add 編集したファイル名
$ git commit  # コミットメッセージを編集
$ git push origin ブランチ名

// 作業ディレクトリの削除
$ cd ../プロジェクト名
$ git worktree remove ../ディレクトリ名
$ git worktree list

// ブランチを削除
$ git branch -d ブランチ名
$ git push origin --delete ブランチ名

git worktreeは1つのリポジトリから複数の作業ディレクトリを管理できる機能です。 ブランチごとにディレクトリを作成することで、 開発作業を並行して進めることができます。

注釈

GitHubやGitLabで作成したブランチもworktreeにできます。 プルリクエストやマージリクエストのローカルテストをする場合にも便利です。

作業ディレクトリを作成したい(git worktree add

$ git worktree add ../ディレクトリ名 ブランチ名(or リモートブランチ名)

git worktree addで作業ディレクトリを作成できます。 作業ディレクトリは、プロジェクトの外側に作るのがよいそうです。

$ git worktree ../worktrees/fix-番号 ブランチ名

僕はプロジェクトと同じ階層にworktreesというディレクトリを作成し、 その中にブランチ名に関連した作業ディレクトリを作成するようにしています。

作業ディレクトリを確認したい(git worktree list

[main] $ git worktree list
~/repos/プロジェクト名          8a6fd26 [main]
~/repos/worktrees/fix-75  8a6fd26 [75-fix-ブランチ名]

git worktree listで作業中のディレクトリを確認できます。 メインブランチ、開発ブランチのどちらからでも、同じ内容を確認できます。

作業ディレクトリを削除したい(git worktree remove

$ git worktree remove ../ディレクトリ名

git worktree removeで作業ディレクトリを削除できます。

警告

rm -rf ../ディレクトリ名で直接削除するのはNGです。 worktreeの情報は.git/worktrees/で管理されるため、 rmコマンドで直接削除すると、リポジトリの整合性が壊れる可能性があるそうです。