Save the state of unfinished feature-branch, to checkout something else. Then back to it.
Make an temporary commit before checking out other branch. Break it down to resume work.
Sometimes you need to pause your current work, and do independent changes in other branch: e.g. hotfix. In many cases you can’t checkout from branch with uncommited changes.
There is a nice
git stash command, that allows you to save your work as a detached diff, and then apply it when necessary. It’s really good, if you need to checkout and keep your changes with you.
But when you change context, it’s much better to left a real commit behind, in the branch you are working with. In that case you will never forget where is your work. So, I use two aliases, allowing me to left temporary commit and break it with ease.
Add it to your
[alias] tmp = commit -a -m"tmp" utmp = reset --soft HEAD~1
unfinished_feature ➜ ✗ git checkout master error: Your local changes to the following files would be overwritten by checkout: change.txt Please, commit your changes or stash them before you can switch branches. Aborting unfinished_feature ➜ ✗ git tmp [unfinished_feature b408f65] tmp 1 file changed, 1 insertion(+) unfinished_feature ➜ git checkout master Switched to branch 'master' # do your job master ➜ git checkout - Switched to branch 'unfinished_feature' unfinished_feature ➜ git graph * b408f65 - (HEAD -> unfinished_feature) tmp (2 minutes ago) <Pavel Dionisev> * b79bd19 - Commit 1 (5 minutes ago) <Pavel Dionisev> unfinished_feature ➜ git utmp unfinished_feature ➜ ✗ git status On branch unfinished_feature Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: change.txt unfinished_feature ➜ ✗ git graph * b79bd19 - (HEAD -> unfinished_feature) Commit 1 (6 minutes ago) <Pavel Dionisev>