Hi, On Thu, 22 Nov 2007, Jonas Juselius wrote: > Suppose I have been working on some topic branch for a while and been > overly trigger happy, i.e. I have produced a ridiculous number of > commits along the way. At some point when I'm done I want to publish my > changes, but doing so would create an insanely obese history full of > near nonsense commits. What I want to do is to slim down the commit log > into pieces that actually makes sense. What is the preferred (or best, > most convenient) way of doing this? The way I have done this previously > is essentially: > > 1. git branch -m mytopic tmp_mytopic # rename > 2. git branch mytopci tmp_mytpoic~42 # go back in history > Loop: > 3.1 git log; git diff; git annotate... > 3.2 git diff tmp_mytopic~42..tmp_mytopic~33 | git-apply > 3.3 git commit -m "sane commit message" -a > 4. git branch -d tmp_mytopic > > If I need to reorder commits I can first use git-rebase -i to get > everything streamlined. There must be a better way of doing this, right? Yes, you can squash commits into previous commits with rebase -i. Just replace the second "pick" command (and if you want to squash more than two, the later commands, too) with "squash". Hth, Dscho - 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