# [PATCH] Note the use of "rebase -i" to squash consecutive commits into one.

2 messages from 2008-08-17 to 2008-08-19. Participants: Eric Hanchrow, Junio C Hamano.
Thread: https://gitlist.dev/t/15062

## Eric Hanchrow, 2008-08-17 22:32

Subject: [PATCH] Note the use of "rebase -i" to squash consecutive commits into one.
Message-ID: <1219012340-23376-1-git-send-email-offby1@blarg.net>
URL: https://gitlist.dev/e/1219012340-23376-1-git-send-email-offby1%40blarg.net

```
---
 Documentation/git-rebase.txt |   24 +++++++++++++++++++++++-
 1 files changed, 23 insertions(+), 1 deletions(-)

diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt
index 59c1b02..074f38b 100644
--- a/Documentation/git-rebase.txt
+++ b/Documentation/git-rebase.txt
@@ -341,7 +341,29 @@ was HEAD~4 becomes the new HEAD. To achieve that, you would call
 $ git rebase -i HEAD~5
 ----------------------
 
-And move the first patch to the end of the list.
+And move the first patch to the end of the list.  Similarly, you can
+squash a bunch of consecutive commits into one commit.  If you start
+with this:
+
+------------
+    Q---R---S---T---U master
+------------
+
+then the command
+
+----------------------
+$ git rebase -i HEAD~3
+----------------------
+
+would let you edit the last three commits -- S, T, and U; if you
+edit the lines corresponding to T and U by changing "pick" to
+"squash", the result will be
+
+------------
+    Q---R---S' master
+------------
+
+where S' contains all the changes that were in S, T, and U.
 
 You might want to preserve merges, if you have a history like this:
 
-- 
1.6.0.rc3.6.gf8030

```

## Junio C Hamano, 2008-08-19 03:32

Subject: Re: [PATCH] Note the use of "rebase -i" to squash consecutive commits into one.
Message-ID: <7vtzdhisre.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vtzdhisre.fsf%40gitster.siamese.dyndns.org
In-Reply-To: <1219012340-23376-1-git-send-email-offby1@blarg.net>

```
This is missing sign-off.

More importantly, I do not think adding an extra illustration that starts
talking about an example history that is _different_ from what was being
discussed is a good idea.  The end result lacks coherence and forces the
reader to reset his mind for each example.

I'd suggest you to rewrite the example part that begins a few lines before
you touched.  Present the example "original" history with illustration
first (and call it A---B---C---D---E---F---G, not QRSTU), and clarify the
existing example of reordering the last 5 commits, and show the history
after such reordering.

Then you talk about squashing, with before-and-after illustrations, but
base that illustration on the same example history.  That way, the reader
has to understand the original scene only once to grok both examples.

```
