From: Joshua Jensen Date: Fri, 27 Aug 2010 15:48:48 GMT Subject: Re: git pull --rebase differs in behavior from git fetch + git rebase Message-ID: <4C77DE60.6020809@workspacewhiz.com> In-Reply-To: ----- Original Message ----- From: Dave Olszewski Date: 8/27/2010 2:27 AM > On Thu, 26 Aug 2010, Joshua Jensen wrote: > >> I have a case where 'git pull --rebase' does not do the Right Thing >> (according to me). >> >> If I run 'git rebase origin/master', that rebase does the right >> thing, perfectly reapplying my *single* commit on top of the upstream. >> >> 'git pull --rebase' ends up reapplying a bunch of much earlier >> commits and ends up with a conflict. >> >> The documentation for git pull --rebase states: "Instead of a merge, >> perform a rebase after fetching. If there is a remote ref for the >> upstream branch, and this branch was rebased since last fetched, the >> rebase uses that information to avoid rebasing non-local changes." I >> do not understand >> >> I'm studying the git-pull script right now, but I have to admit this >> is beyond me. I'm sure if I stare hard enough, I'll get it. >> >> I mistakenly have assumed 'git pull' = 'git fetch; git merge' and >> that 'git pull --rebase' = 'git fetch; git rebase'. Does anyone want >> to clarify what is really going on? Unfortunately, I can't publish >> the repository in question. > > Are you by any chance running a git with commit cf65426de? If not, give > it a try and see if it corrects your issue. I was not, but now I am. > The main difference between "git pull --rebase" and "git fetch && git > rebase @{u}" is that "git pull --rebase" will attempt to use the reflog > to find a suitable "upstream" candidate instead of assuming your > tracking branch is the upstream itself. This is intended to help > recover from upstream rebases, but has adverse effects sometimes, which > commit cf65426de should help with. Unfortunately, commit cf65426de helps only a little. The 'git pull --rebase' reports "Nothing to do" and moves the master branch to origin/master, leaving behind the commit needing to be rebased. What else might there be to try? I would like to help with a repro, if possible. Josh