git worktrees
https://www.gitkraken.com/learn/git/git-worktree
Most experienced developers are comfortable with the notion of branches in git: you have the main lump of code and then to keep the main lump of code "pure", you create a branch that's separate from the main lump of code and do all of your work in there before bringing your branch (its changes) into the main lump of code.
In terms of physical existence on the operating system, the main lump of code and all the branches are all part of the same folder. What's different about worktrees is that they're federated out into subfolders within the folder your repository is in.
When you create a new worktree, you can either specify a branch to check out immediately or check out a branch in that worktree later. However, you can only have that branch checked out in the worktree.
Since each worktree is in a separate folder, you can work on multiple branches simultaneously without having to either copy or clone your repo again.