Re: [RFC PATCH] `log --merge` also for rebase/cherry pick/revert
- From
Michael Lohmann <mi.al.lohmann@gmail.com>
- Date
- Jan 12, 2024, 15:03 UTC
- Message-ID
- <20240112150346.73735-1-mi.al.lohmann@gmail.com>
- In-Reply-To
- <47a4418b-68bf-4850-ba8b-1a5264f923e4@gmail.com>
Hi Phillip,
On 12. Jan 2024, at 12:01, phillip.wood123@gmail.com wrote:
> I should start by saying that I didn't know "git log --merge" existed before > I saw this message
I also just found it and it looked very useful...
Show 10 quoted lines
> so please correct me if I've misunderstood what this patch is doing. If I > understand correctly it shows the commits from each side of the merge and is > equivalent to > > git log HEAD MERGE_HEAD ^$(git merge-base HEAD MERGE_HEAD) > > When a commit is cherry-picked the merge base used is CHERRY_PICK_HEAD^ [*] > so I'm not sure what > > git log HEAD CHERRY_PICK_HEAD ^$(git merge-base HEAD CHERRY_PICK_HEAD)
Almost, but not quite: "git log —merge" only shows the commits touching the conflict, so it would be equivalent to (I think):
git log HEAD CHERRY_PICK_HEAD ^$(git merge-base HEAD CHERRY_PICK_HEAD) -- $(git diff --name-only --diff-filter=U --relative)
(or replace CHERRY_PICK with one of the other actions)
> Indeed there HEAD and CHERRY_PICK_HEAD may not share a common ancestor.
True - but same for MERGE_HEAD ("git merge --allow-unrelated-histories"). I have to confess I did not check how it would behave under those circumstances. It could either error, or (more helpful) show the log touching the file until the root commit.
Best wishes Michael