Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
April 9, 2022 04:41 am GMT

Git Worktree

I am not sure why I had no idea about this gem. I have been using Git for almost 10 year and discovered this just few days back and from that time it has become an essential part of my workflow.

Scenario: Deep down working on a feature branch for an app, suddenly a big issue was found in production for which you have to find a solution and deploy hotfix

Here was my workflow:

Workflow 1

  • Commit all my work in my feature branch, even when I know it's not even half done and obviously will not compile.
  • Checkout master -> create hotfix branch --> make changes and deploy
  • Checkout my feature branch, undo last commit, and start working again.

Workflow 2

  • Stash changes to feature branch. Most of the time I will forget to stash untracked files, so stash again with a message "this also needs to be unstashed-- "
  • Checkout master -> create hotfix branch --> make changes and deploy
  • Checkout feature branch, pop up last stash and second last stash, continue working

The problem with above workflow was, if I move to work on something else, and come back after considerable time, I will not remember where I left, and god forbid If I have more stash changes and my stash message are not even understandable by me after a week.

How Git Worktree helped me out.

Now whenever I have to work on a feature, I add a new worktree. In case I have to go and work in another branch, I just change worktree folder and start working on that branch. I don't have to commit half or not working code or have to stash them (with appropriate message) anymore. I can just switch folder and start working in a new branch.

How to add a worktree

git worktree add -b "feature/your-branch-name"

Full list of commands for worktree

git worktree add [-f] [--detach] [--checkout] [--lock [--reason <string>]] [-b <new-branch>] <path> [<commit-ish>]git worktree list [-v | --porcelain]git worktree lock [--reason <string>] <worktree>git worktree move <worktree> <new-path>git worktree prune [-n] [-v] [--expire <expire>]git worktree remove [-f] <worktree>git worktree repair [<path>]git worktree unlock <worktree>

Read more here
Let me know how you use worktree.

Thanks
Kumar Nitesh


Original Link: https://dev.to/knitesh/git-worktree-2km2

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To