Forem

Cover image for You need to use Git worktree
Dragoș Străinu
Dragoș Străinu

Posted on • Originally published at strdr4605.com

4 1

You need to use Git worktree

Recently I found git worktree feature and I plan to use it in all my projects.
Here is why and how you can use it.

Why

If you are working on a big project with a lot of issues and tasks, you constantly have to switch between branches to do some quick-fix changes or maybe review a PR from a teammate.
The problem is that often you have some work in progress and switching branches means that you need to commit or stash your WIP changes.
If it's only 1-2 files/changes the cost of commit/stash is not that high. But if you work on a big feature with over 9000 changes it's hard to constantly change branches.

How

Basically git worktree command allows to create a new directory with desired git state.

Actually, your current workspace is already in git worktree.

You can type git worktree list and you will see one item, which is your current git workspace.

Let's say you work on a big feature in your work project.

git worktree list
~/Work/project  17d8aab [big-feature]
Enter fullscreen mode Exit fullscreen mode

And a quick-fix needs to be done from the origin/master.
You can create a git worktree with the following command:

git worktree add -b quick-fix ../quickfix origin/master
Enter fullscreen mode Exit fullscreen mode

This command will create a new directory named quickfix at the same level as your project directory.

The branch will be quick-fix and it will be set at commit from origin/master.

You can see your git worktree:

git worktree list
~/Work/project   17d8aab [big-feature]
~/Work/quickfix  25e6c4b [quick-fix]
Enter fullscreen mode Exit fullscreen mode

Next, you can navigate to quickfix directory, do your changes, push to remote, merge.

After you are done with quickfix you can remove the workspace with git worktree remove quickfix.

Conclusion

This approach of using git worktree is not the most elegant but it's doing the job.
I might change the workflow (using bare git repos instead of normal repos) and will update this post.
For now you may check How to use git worktree and in a clean way.

But I suggest to play a bit with git worktree if you have problems from Why section. And adding this git feature to your toolkit will make you a more productive engineer.

Let me know if you have a nice workflow for git worktree!

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more

Top comments (0)

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay