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

Re: [PATCH RFC] rebase: add --revisions flag

From
Björn Steinbrink <b.steinbrink@gmx.de>
Date
Dec 9, 2009, 13:06 UTC
Message-ID
<20091209130653.GA30218@atjola.homenet>
In-Reply-To
<20091209120748.GI2977@redhat.com>
On 2009.12.09 14:07:48 +0200, Michael S. Tsirkin wrote:
Show 21 quoted lines
> On Wed, Dec 09, 2009 at 01:06:10PM +0100, Björn Steinbrink wrote:
> > On 2009.12.09 12:48:24 +0100, Andreas Schwab wrote:
> > > Björn Steinbrink <B.Steinbrink@gmx.de> writes:
> > > 
> > > > Err, no. "git merge --squash foo" merges all changes from the merge base
> > > > of HEAD and foo up to foo. "git cherry-pick foo" takes just the changes
> > > > from foo^ to foo. For example:
> > > >
> > > > A---B---C (master)
> > > >  \
> > > >   D---E---F (foo)
> > > >
> > > > git cherry-pick foo # Tries to create a new commit with the changes from
> > > >                     # "git diff D F"
> > > 
> > > Did you mean "git diff E F"?
> > 
> > Ugh, yes, of course. Thanks.
> 
> So this will be best written as
> git cherry-pick ..foo

No, "git cherry-pick ..foo" should pick the individual commits, and not create a single big commit like "git merge --squash". So such a command should make you end up with:

A---B---C---D'--E'--F' (master)
         \
          D---E---F
Not:
A---B---C---M (master)
         \
          D---E---F (foo)
[M being the "sqash-merge"]

"merge --squash" is one of the things I really dislike, because it turns off the "history" part of the merge. You can say "Merging in git is about histories, merging in svn is about changes only" to describe the major difference for the merge commands in the two systems... "But then there's --squash which turns git into svn".

I think a "cherry-pick --squash <range>" command would be nicer from a conceptual point of view, but it's way too late for merge --squash to be dropped. And I guess it wouldn't be trivial to add such a flag, and not worth the effort, as you could as well use the interactive mode and replace "pick" with "squash" manually. (An el cheapo implementation that automatically replaces it would likely confuse the user, because he asked for a single commit, but might get to fix conflicts for all the individual commits).

Björn
Previous: Michael S. TsirkinNext: Junio C Hamano
Message 27 of 43 in “rebase: add --revisions flag”
  1. rebase: add --revisions flagMichael S. Tsirkin, Dec 8, 2009
  2. Björn SteinbrinkDec 8, 2009
  3. Michael S. TsirkinDec 8, 2009
  4. Björn SteinbrinkDec 8, 2009
  5. Michael S. TsirkinDec 8, 2009
  6. Björn SteinbrinkDec 8, 2009
  7. Michael S. TsirkinDec 8, 2009
  8. Björn SteinbrinkDec 8, 2009
  9. Michael S. TsirkinDec 8, 2009
  10. Björn SteinbrinkDec 8, 2009
  11. Michael S. TsirkinDec 8, 2009
  12. Björn SteinbrinkDec 9, 2009
  13. Michael S. TsirkinDec 9, 2009
  14. Miles BaderDec 9, 2009
  15. Junio C HamanoDec 8, 2009
  16. Sverre RabbelierDec 8, 2009
  17. Christian CouderDec 9, 2009
  18. Christian CouderDec 9, 2009
  19. Sverre RabbelierDec 9, 2009
  20. Peter KreftingDec 9, 2009
  21. Michael S. TsirkinDec 9, 2009
  22. Peter KreftingDec 9, 2009
  23. Björn SteinbrinkDec 9, 2009
  24. Andreas SchwabDec 9, 2009
  25. Björn SteinbrinkDec 9, 2009
  26. Michael S. TsirkinDec 9, 2009
  27. Björn SteinbrinkDec 9, 2009
  28. Junio C HamanoDec 9, 2009
  29. Björn SteinbrinkDec 10, 2009
  30. Junio C HamanoDec 10, 2009
  31. Björn SteinbrinkDec 11, 2009
  32. Peter KreftingDec 9, 2009
  33. Björn SteinbrinkDec 9, 2009
  34. Peter KreftingDec 10, 2009
  35. Björn SteinbrinkDec 10, 2009
  36. Michael S. TsirkinDec 9, 2009
  37. Matthieu MoyDec 9, 2009
  38. Matthieu MoyDec 9, 2009
  39. Michael S. TsirkinDec 9, 2009
  40. Björn SteinbrinkDec 9, 2009
  41. Michael S. TsirkinDec 9, 2009
  42. Junio C HamanoDec 9, 2009
  43. David KågedalDec 13, 2009

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.