Re: Git in a Nutshell guide
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Nov 22, 2007, 14:24 UTC
- Message-ID
- <Pine.LNX.4.64.0711221522540.4725@wbgn129.biozentrum.uni-wuerzburg.de>
- In-Reply-To
- <1195737303.19260.27.camel@localhost>
Hi,
On Thu, 22 Nov 2007, Jonas Juselius wrote:
Show 19 quoted lines
> 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