After updating my local master, I routinely rebase my local branches.
However, this time, I forgot to checkout master back between rebases and rebased one local non-master branch (branch_2 in my example) on top of the other (branch_1). I use IDEA's "Checkout and rebase onto..." feature, it's a convenient shortcut.
How do I now "re-rebase" the mis-rebased branch (branch_2) onto master? Technically, it's already on master (even though there's another branch in between), so rebasing onto master won't work.
* branch_2
*
* branch_1
*
* master
*
Simply use
git rebase --onto master branch_1 branch_2
i.e., recreate on master all commits from branch_1 to branch_2 – or more precisely, all commits which are contained in branch_2, excluding those which are contained in branch_1 – and then update the branch_2 pointer.
An alternative interpretation is: change the base of branch_2 from branch_1 to master.
IMO the most comprehensive explanations for how --onto works are given in What is the difference between `git rebase master` and `git rebase --onto master`?