Implementation of Worktree feature in Git

Reading Time: 2 minutes

What is worktree

The worktree feature is used to manage multiple working trees. Implementation of worktree feature provide us to checkout multiple branches at the same time. Worktree gives a extra working copy of the repository. The new worktree is also known as Linked working tree. The worktree is not only for the branches, but with the help of worktree we can check out tags of different worktree.

Why worktree

When we have multiple working trees branches and we want to work on both simultaneously then we stash our work and checkout from current branch , test and go back. And if we want to check again, we do it again. Instead we create a worktree with their branch and now we just need to change directory and look at their work and come back and resume our work.

Worktree Commands

Git worktree add :

Work tree add command creates work tree where new working tree is linked with the current repository by sharing everything except working directory like HEAD, index ,etc.

Git worktree list :

Work tree list used for  listing details of each working tree and main working tree is listed first and followed by each of the linked working trees.

Git work tree lock and remove :

Worktree command comes in Git v2.10 . This also used to prevents it from being remove or deleted.  After write the command we can write (–reason) this contains simple text specify a reason for lock.

Git remove command used for remove the work tree . The main working tree cannot be removed in a multi module project we are working then if we want to check all the branches without using the stash feature this feature is best alternative many developer who are using git this feature is very helpful .

References :
https://git-scm.com/docs/git-worktree

https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/Use-this-git-worktree-add-example-and-never-switch-branches-again.

Written by 

Harshit Gupta is a Software Consultant at knoldus Inc having few year experience in DevOps . He always eager to learn new technology and helping to others .