threads / discuss / 13114

Combining/merging commits

Subject: Combining/merging commits

## tl;dr

3 messages between Apr 15, 2008 and Apr 15, 2008.

replies: 2people: 2as markdown or json

xpr1010· Apr 15, 2008, 00:57 UTC · lore

I have made several commits that should really have only been one, but there was a lot of back and forth because of my inherent clumsiness. Is there any way to combine or merge these commits to one?

Thanks!
Johannes Sixt· Apr 15, 2008, 06:37 UTC · re: xpr1010 · lore

Re: Combining/merging commits

xpr1010 schrieb:
> I have made several commits that should really have only been one, but
> there was a lot of back and forth because of my inherent clumsiness.
> Is there any way to combine or merge these commits to one?
Say, you have this commit series:
 ...--A--B--C--D

and you want to combine all of them, i.e. the last 4 commits, into a new one, then you can do:

    # undo commits, but leave working directory unchanged
    $ git reset HEAD~4
    # make a new commit
    $ git commit

But if you want to combine only A,B,C because D should remain a separate commit (i.e. what you want to combine are *not* the last commits), then use git rebase --interactive, in particular, the 'squash' instruction. You would use this todo list:

    pick A
    squash B
    squash C
    pick D
-- Hannes
xpr1010· Apr 15, 2008, 12:43 UTC · re: Johannes Sixt · lore

Re: Combining/merging commits

Worked. Thanks! :)
On 15 Apr, 08:37, Johannes Sixt <j.s...@viscovery.net> wrote:
Show 34 quoted lines
> xpr1010 schrieb:
>
> > I have made several commits that should really have only been one, but
> > there was a lot of back and forth because of my inherent clumsiness.
> > Is there any way to combine or merge these commits to one?
>
> Say, you have this commit series:
>
>  ...--A--B--C--D
>
> and you want to combine all of them, i.e. the last 4 commits, into a new
> one, then you can do:
>
>     # undo commits, but leave working directory unchanged
>     $ git reset HEAD~4
>     # make a new commit
>     $ git commit
>
> But if you want to combine only A,B,C because D should remain a separate
> commit (i.e. what you want to combine are *not* the last commits), then
> use git rebase --interactive, in particular, the 'squash' instruction. You
> would use this todo list:
>
>     pick A
>     squash B
>     squash C
>     pick D
>
> -- Hannes
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

← back to recent threads