I don't know if it is my version problem or not. I am trying to pull --rebase from the current branch (F -r RET). For now, I have to use workaround (r r origin/branch)
1 Answer
Maybe that was just a typo in the question, but to pull while using --rebase
, you have to type F - r F, not F - r RET.
Edit: Starting with v2.4
this has changed a bit.
Instead of using the pull popup to rebase, you could also use the dedicated rebase popup. If you do that, then you don't have to explicitly say that you want to rebase instead of merging. That is implied. r u would rebase the current branch onto its upstream branch. There are some other rebase variants available. For example you might need r esome-other-branch
RET occasionally. (That second binding was already available in older releases. The first was not.)
Often it makes more sense to use the rebase popup instead of the pull popup to rebase. "Pull" means to "fetch, and then merge or rebase". If you use git pull --rebase
instead of git rebase
, then this might bring in additional commits which you have not previously seen. That might, or might not, be an issue, depending on what you expect.
For "one-time rebases" I strongly recommend using the rebase popup. If, for a given branch, you always rebase instead of merge, then it does make sense to continue to use the pull popup.
But in that case it is inconvenient to always have explicitly set the --rebase
switch. In older releases it was possible to enable that argument (or any other argument for that matter) by default.(In any popup C-x C-s saves the current arguments for later invocations.)
But there is a problem with --rebase
- it affects all branches. So I have replaced it in the push popup with the variable branch.<name>.rebase
. <name>
is the current branch, and setting the value for one branch does not affect other branches. (You don't have to use C-x C-s to save variables, just setting the variable is enough.)