Re: Git in a Nutshell guide
- From
Jonathan del Strother <maillist@steelskies.com>
- Date
- Nov 22, 2007, 14:19 UTC
- Message-ID
- <128F468C-B1A2-4671-8804-F462D1D4B9D8@steelskies.com>
- In-Reply-To
- <1195737303.19260.27.camel@localhost>
On 22 Nov 2007, at 13:15, Jonas Juselius wrote:
Show 29 quoted lines
> I'm planning to write a section in the "Nutshell guide" on rewriting > history and rebasing. I have a question related to rewriting > history. As > usual, I'll assume that the part of the history I'm mucking with has > not > been pushed or pulled by anyone. > 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?
I may be missing something here, but you know that you can edit commits and squash commits together (using something like "git rebase --interactive mytopic~42"), right?