Git v2.7.0 is out! All you need to do now is set the following global config flag and you can simply rebase as usual even onto a dirty worktree:
git config --global rebase.autostash true
The recently released Git v2.6.0 has been taught to pay attention to your rebase.autostash configuration which enables the
--autostash option by default. That means that a simple
git pull --rebase is now capable of rebasing a dirty worktree.
It is the
git rebase --autostash command. And it basically does what it says: Automatically stashing away changes before performing the rebase operation. Before that release, rebase would just refuse to run.
It is the equivalent to:
git stash & git pull --rebase & git stash pop.
Now think about how many times you’re doing that per day. At least I find myself executing those commands over and over again to stay up-to-date with the remote origin.
So I created a handy alias for
git fetch && git rebase --autostash, so I only need to run
If you’re using SourceTree, you might also want to create a custom action that allows you to do the same operation with a single mouse click. Just create a new file called
stash_and_rebase.sh with the following contents:
#!/bin/sh git fetch && git rebase --autostash
You can then set it up via SourceTree / Preferences / Custom Actions / Add like so:
Baam! That’s it. And it saves me a couple of seconds every day :)