Hi Junio, On 23/08/2016 21:28, Junio C Hamano wrote: > Joshua Phillips <jphillips@xxxxxxx> writes: > > I've found a case where git pull --rebase discards commits in my branch > > if the remote-tracking branch was rewound (and the remote tracking > > branch's reflog contains my branch's latest commit). This is due to > > git-pull's usage of git merge-base --fork-point. > > > > On one hand, this behaviour might be correct since the remote repository > > essentially removed that commit from master by 'reset --hard'. On the > > other hand, I was surprised that git pull --rebase discarded a commit in > > my branch. > > Yup, that sounds like a bad way to handle the situation. After all, > the upstream may have first accepted your first attempt, and then > decided that it was premature and rewound it, expecting you to give > an improved reroll. But I also agree with you that it may be > correct to drop it because the upstream already rejected it. > > Since Git cannot tell between these two cases, we should play safer > than what the current code does, I would think. Were there any news in this regards so far? Would it be (more) sensible/safe to report the dropped commits, too? Something like: Dropping: Commit B Applying: Commit X Applying: Commit Y ... where "Applying: *" are standard "git rebase" output lines, and "Dropping: *" a newly proposed one (example graphs (1.1) to (1.3) shown below[1]). That said, applied commits might even be considered pretty uninteresting here (as they`re kept/transferred over anyway), a noise drowning what otherwise might be really important - the dropped/lost ones...? It does feel a bit scary learning that you may _silently_ lose commits, especially as --fork-point is used by default for both vanilla `git rebase` and `git pull --rebase`. P.S. As a relatively new user, I actually just got aware of this behavior from another, recently posted e-mail[2], having me investigate further, yet thought replying here might be better as it got some attention already (adding author of that other e-mail, Laszlo Kiss, to Cc). Regards, Buga [1] Example graphs: (1.1) ---A---B (master) \ X---Y (topic) (1.2) C---D (master) / ---A---B \ X---Y (topic) (1.3) X'---Y' (topic) / C---D (master) / ---A Note that I didn`t use "origin/master" but just "master" on purpose, as the branch being tracked doesn`t have to be a remote one, making the lost local commits confusion even greater. [2] https://public-inbox.org/git/CAO0LFki4PN8zz2xpoSpjTHJGS=NG_suQYR27EcmzEMiaCw9kuA@xxxxxxxxxxxxxx/