git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Is there something like a git format-patch --squash?

From
Avery Pennarun <apenwarr@gmail.com>
Date
Feb 18, 2010, 19:45 UTC
Message-ID
<32541b131002181145w44d69e9eo150d08f34273cefb@mail.gmail.com>
On Thu, Feb 18, 2010 at 1:38 PM, Avery Pennarun <apenwarr@gmail.com> wrote:
Show 19 quoted lines
> On Thu, Feb 18, 2010 at 12:11 AM, Jeff King <peff@peff.net> wrote:
>> One simple strategy would be to squash all side-branch development into
>> a single commit.
>
> Something like this (replace MY_START_BRANCH with your starting
> branch, and do this in a clone of your repository so you don't destroy
> anything by accident):
>
>        parent=""
>        git rev-list --first-parent --reverse  | while read commit; do
>                if [ -z "$parent" ]; then
>                        git checkout -f $commit
>                        git clean -fdx
>                else
>                        git diff $parent $commit | git apply --index
>                        git commit -C $commit
>                fi
>                parent=$commit
>        done
In the above, in the 'else' clause, what I really wanted was something like:
   git format-patch --stdout --squash $parent..$commit
with one big "| git am" at the end of the loop.

However, format-patch seems to have no way of just producing a single patch with all the changes from a particular branch. Is there some other easy command that would do what I want? It seems like something that someone would have wanted before now.

Thanks,
Avery
Next: Avery Pennarun
Message 1 of 4 in “Is there something like a git format-patch --squash?”
  1. Avery PennarunFeb 18, 2010
  2. Avery PennarunFeb 18, 2010
  3. Jeff KingFeb 18, 2010
  4. Avery PennarunFeb 18, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.