Options up to now:
- $ git clone [current-repo] [temp-repo]; cd temp-repo # too heavy-weight, have to push changes back
- $ sleep 120; check email # interrupts flow
In Git 2.5.0, you can do this easily:
- $ git worktree add ../temp master
This creates a new workarea in ../temp with all the current branches. It's the same repository! Any git command you do in the new workarea is applied to (and uses the database of) the original repository: commit, rebase, push, etc.
NOTE: If you leave off the branch name, 'git worktree add' creates a branch named after the new worktree directory.
NOTE: If you want to operate on the same branch as the original repository, it is disallowed by default. In order to operate on the same branch, you have to say $ git worktree add ../temp master -f'. Also if you ever move off of the branch and want to switch back when another worktree has the same branch checked out, you have to use an annoyingly-long option: $ git checkout master --ignore-other-worktrees. You could put that in an alias like so: $ git config --global alias.co "checkout --ignore-other-worktrees".