Re: how to most effectively cherry pick by selective patch hunk?

2 messages, 2 authors, 2021-02-11 · open the first message on its own page

Re: how to most effectively cherry pick by selective patch hunk?

From: Andreas Schwab <hidden>
Date: 2021-02-09 17:14:33

On Feb 09 2021, Jeff King wrote:
Of course that involves a change to Git, and you were looking for
something you could do with existing versions. :) You can emulate it by
making the commit's parent equivalent to your current state. I.e.:

  git checkout --detach ;# detached HEAD for temporary commit
  git cherry-pick $commit ;# maybe deal with conflicts
  commit=$(git rev-parse --verify HEAD) ;# remember the temp commit
  git checkout - ;# back to your branch
  git checkout -p $commit
Alternatively, you could cherry-pick normally, then use
 git checkout -p HEAD^
to remove what you don't want.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."

Re: how to most effectively cherry pick by selective patch hunk?

From: Elijah Newren <hidden>
Date: 2021-02-11 00:55:37

On Tue, Feb 9, 2021 at 11:44 PM Andreas Schwab [off-list ref] wrote:
On Feb 09 2021, Jeff King wrote:
quoted
Of course that involves a change to Git, and you were looking for
something you could do with existing versions. :) You can emulate it by
making the commit's parent equivalent to your current state. I.e.:

  git checkout --detach ;# detached HEAD for temporary commit
  git cherry-pick $commit ;# maybe deal with conflicts
  commit=$(git rev-parse --verify HEAD) ;# remember the temp commit
  git checkout - ;# back to your branch
  git checkout -p $commit
Alternatively, you could cherry-pick normally, then use
 git checkout -p HEAD^
to remove what you don't want.
Or, going into the slightly esoteric, you could define a custom local
merge driver for the particular file you want to ignore and say that
merges of that file always use the original version and ignore changes
made on both sides.

man gitattributes(5), search for "filfre"

Appears to be unchanged since git-2.5.0.

Only ever used them once myself long ago (and not for a real usecase),
because I wanted to understand what they were for.  However, it seems
like they might be useful here.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help