Git worktree workflow with release branches
July 9, 2022 ‐ 2 min read
In most projects I use a branching model as described by Vincent Driessen with a
For new feature development I branch off of
dev, and once those changes are considered adequate
dev gets promoted to
staging. In most cases this works fine.
In some cases however a hotfix needs to be applied, for which I preferably branch off from staging. To make sure that not fully tested features don't land prematurely in production.
This can cause some hassle in my local git repo. With switching from
staging I need to make sure my
node_modules are properly and there are no migrations applied which should not be applied on staging yet. Don't wanna mess around if I already need to apply a hotfix.
Enter git worktrees. Git worktrees allow you to checkout multiple worktrees in different directories while using the same repository. Thus, I have a separate directory for the
staging branch which have their own node_modules assuming that you added that directory to the .gitignore.
Add a worktree
To create a new git worktree to your repository you can run the following command in your repository.
$ git worktree add <PATH> <BRANCH>
Lets for example say I have a repository in the folder
~/myproject. To add a worktree on the same level for the
staging branch I run the following command.
~/myproject$ git worktree add ../myproject-staging staging