# Combining/merging commits

3 messages from 2008-04-15 to 2008-04-15. Participants: xpr1010, Johannes Sixt.
Thread: https://gitlist.dev/t/13114

## xpr1010, 2008-04-15 00:57

Subject: Combining/merging commits
Message-ID: <8e0b7b96-aee8-45a4-a160-023e92845434@n1g2000prb.googlegroups.com>
URL: https://gitlist.dev/e/8e0b7b96-aee8-45a4-a160-023e92845434%40n1g2000prb.googlegroups.com

```
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, 2008-04-15 06:37

Subject: Re: Combining/merging commits
Message-ID: <48044D15.6040801@viscovery.net>
URL: https://gitlist.dev/e/48044D15.6040801%40viscovery.net
In-Reply-To: <8e0b7b96-aee8-45a4-a160-023e92845434@n1g2000prb.googlegroups.com>

```
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, 2008-04-15 12:43

Subject: Re: Combining/merging commits
Message-ID: <6e6761f0-7457-4674-a935-92d00c294b21@b9g2000prh.googlegroups.com>
URL: https://gitlist.dev/e/6e6761f0-7457-4674-a935-92d00c294b21%40b9g2000prh.googlegroups.com
In-Reply-To: <48044D15.6040801@viscovery.net>

```
Worked. Thanks! :)

On 15 Apr, 08:37, Johannes Sixt <j.s...@viscovery.net> wrote:
> 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

```
