Git Worktree Operations: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 37: Line 37:
<syntaxhighlight lang='bash'>
<syntaxhighlight lang='bash'>
git worktree add <absolute-or-relative-local-path> <branch|commit|tag>
git worktree add <absolute-or-relative-local-path> <branch|commit|tag>
</syntaxhighlight>
A remote branch for which there is no local tracking branch can be initialized in a work tree as follows:
<syntaxhighlight lang='bash'>
git worktree add --track -b <branch-name> <absolute-or-relative-local-path> <remote>/<branch-name>
</syntaxhighlight>
</syntaxhighlight>



Revision as of 23:40, 10 July 2020

Internal

Typical Working Tree Workflow

Assuming that a developer is in the middle of a major refactoring on a branch and it is impractical to commit a stable checkpoint, or even stash, switching to a different branch while leaving the current branch in the state it is in involves:

git worktree add ../playground-temp /existing/task/branch/I/need/to/work/on

It is also possible to create a new branch on-the-fly. The branch is based on the branch specified in command line:

git worktree add -b temp-emergency-branch  ../playground-temp /existing/task/branch/I/need/to/work/on

To interact with the newly checked out branch in the new working tree, simply go to the working tree directory:

cd ../playground-temp

After operating changes, commit as usual, and possibly remove the working tree:

git commit -m "some work"
cd ../playground
git worktree remove ../playground-temp

Create a Working Tree

git worktree add <absolute-or-relative-local-path> <branch|commit|tag>

A remote branch for which there is no local tracking branch can be initialized in a work tree as follows:

git worktree add --track -b <branch-name> <absolute-or-relative-local-path> <remote>/<branch-name>

Remove a Working Tree

git worktree remove

It is possible to remove the work tree local filesystem directory without calling git worktree remove. The associated administrative files will be eventually removed automatically. Alternatively,

git worktree prune

can be execute to clean up state.