Hi Phillip On 18/12/2023 16:42, Phillip Wood wrote: > Thanks for bringing this up I agree it can be very helpful to look at > the original commit when resolving cherry-pick and revert conflicts. > I'm in two minds about this change though - I wonder if it'd be better > to improve the documentation for CHERRY_PICK_HEAD and REVERT_HEAD and > tell users to run "git show CHERRY_PICK_HEAD" instead. I think the > main reason we have a "--show-current-patch" option for "rebase" is > that there are two different implementations of that command and the > patched-based one of them does not support REBASE_HEAD. That reasoning > does not apply to "cherry-pick" and "revert" and > "--show-current-patch" suggests a patch-based implementation which is > also not the case for these commands. I appreciate the urge of limiting the interface to the minimum needed and not to duplicate functionality that already exists. On the other hand, this would a) grant the user the same experience, not having to wonder about implementation details such as different backends for rebase, but not for revert/cherry-pick and b) (I know it is more indicative of me, but:) when I am looking for a feature in software and I look into the respective man page I tend to focus first on the synopsis instead of reading the whole page (or sometimes I even just rely on the shell autocompletion for discoverability). So yes, mentioning REVERT_HEAD and CHERRY_PICK_HEAD in the respective docs would technically be sufficient, but I don't think it is as discoverable to an average user (who does not know about the details of all the existing pseudo refs) as a toplevel action would be. But an assessment of the pros and cons is not on me to decide. I have to be honest: I have troubles distinguishing a "patch" and a "diff", the latter of which `git show <commit>` shows according to the documentation ("For commits it shows the log message and textual diff."), though my understanding was that a patch is a diff + context lines, which is what `git show` actually shows... I think this is probably why I don't feel so strong about the potential loose usage of the word here. Also the documentation of cherry-pick already uses the word "patch" in a (according to my understanding from a technical perspective) sloppy (but from a layman's point of view probably nevertheless helpful) way: > The following sequence attempts to backport a patch, bails out because > the code the patch applies to has changed too much, and then tries > again, this time exercising more care about matching up context lines. > > ------------ > $ git cherry-pick topic^ <1> > $ git diff <2> > $ git cherry-pick --abort <3> > $ git cherry-pick -Xpatience topic^ <4> > ------------ > <1> apply the change that would be shown by `git show topic^`. > In this example, the patch does not apply cleanly, so > information about the conflict is written to the index and > working tree and no new commit results. Should that also be rephrased? Out of curiosity: The following from the rebase docs seems to imply that the apply backend will probably be removed in the future: > --apply > Use applying strategies to rebase (calling git-am > internally). This option may become a no-op in the future > once the merge backend handles everything the apply one > does. But I would expect the `rebase --show-current-patch` still to be working. Would that only be a legacy compatibility flag and instead also for rebases the recommended option would be to run `git show REBASE_HEAD`? Best Wishes Michael