On Thu, Apr 18, 2013 at 7:18 AM, Ilya Basin <basinilya@xxxxxxxxx> wrote: > I asked this on stackoverflow, but no reply. > http://stackoverflow.com/questions/15971244/git-put-their-commits-after-my-commits-with-a-single-rebase-command > > Suppose master and origin/master diverged. > I'm on master and I want to put the commits from origin/master after my commits and then push --force. > > A---B---C origin/master > / > D---E---F---G *master > > desired result: > > A---B---C origin/master > / > D---E---F---G---A'---B'---C' *master Note that if other people are working on top of origin/master, then what you are proposing is quite rude to them, since they must now manually rebase their own work on top of your rebased history. Rewriting public history is generally considered evil. > Variant 1: > > git branch -f tmp > git reset --hard origin/master > git rebase tmp > > This variant is bad, because 'git reset --hard' checks out some files and 'git rebase' rewrites them again before applying commits. It's a redundant job. > Variant 2: > > git branch -f tmp origin/master > git rebase --onto master master tmp > git branch -f master > git checkout master > > Too many commands. I want to do this with just one command. And I want > to stay be on branch master in case of rebase conflicts. git cherry-pick master..origin/master ...Johan -- Johan Herland, <johan@xxxxxxxxxxx> www.herland.net -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html