Brent Goodrick <bgoodr@xxxxxxxxx> writes: > What I really want to do is simply replace the last two commits on the > branch with one commit, so that when I make my patch it will be just > the full set of changes and not a lot of noise. Is there a way to do > that? (note: I did try the git merge --squash command but it just > showed me the usage, as I was on my bg/no-progress branch). Note that > I know that I would not be able to do this once some of my changes had > merged upstream. Suppose you have this topology. You forked and built 2 commits, while the upstream advanced its tip (or not). 1--2 your commits (master) / ---o---o---o upstream (origin) 1. Using "rebase -i" ... on your "master" $ git rebase -i origin ... will give you an insn sheet for interactive rebase to edit. ... you will see something like: pick xxxxxx title of commit 1 pick yyyyyy title of commit 2 ... edit the second "pick" to "squash", save and exit the editor. ... You are telling it to "first cherry-pick my 1, and then squash my ... 2 on top of it. ... it will do as it is told, and will give you another editor, with ... messages from both commits in it. Edit to formulate a log message ... suitable for the combined commit, save and exit the editor. You will end up with: ---o---o---o---X where rightmost 'o' is still origin, X is your two commits squashed into one. 2. Using "mrege -s squash" ... on your "master" $ git merge --squash origin ... this will stop without creating a commit. Then you would $ git commit ... and the editor will give you the log message from all the ... commits on the branch you just merged. Come up with a single ... log message to describe all, save and exit the editor. You will end up with: ---o---o---o---X where rightmost 'o' is still origin, X is your two commits squashed into one. -- 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