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."
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.