Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

Welcome to Software Development on Codidact!

Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.

Comments on How do I ask git-show-branch to display a commit range?

Parent

How do I ask git-show-branch to display a commit range?

+7
−0

For some tasks, I find git show-branch easier to follow than git log. For example, inspecting the history on someone's PR before merging it.

git show-branch master topic stops at the first common ancestor, which is usually not what I want. Usually I want to display the same commits that would have been covered by git log master...topic, but in a show-branch format. Sometimes the two are the same, but not always.

Is there an incantation that will do this?

[Edit]: After experimenting a bit, it looks like I only run into a problem if the tip of one branch is a merge of the other. For example, consider a history like this:

master  *---*---A---B---*
             \           \
topic         a---b---c---*

If I then do git show-branch master topic, it doesn't include a, b, and c, even though those commits are not ancestors of master.

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.
Why should this post be closed?

0 comment threads

Post
+1
−1

According to the docs, you could use the --more flag

If you just want to look at some commits past the common ancestor, then you can add the --more flag to it.

From the git-scm docs for git-show-branch,

--more=<n>

Usually the command stops output upon showing the commit that is the common ancestor of all the branches. This flag tells the command to go <n> more common commits beyond that. When <n> is negative, display only the <reference>s given, without showing the commit ancestry tree.

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

1 comment thread

I did see --more, but I don't think it suits this use case. I'm not looking for 10 or 30 or 100 addit... (5 comments)
I did see --more, but I don't think it suits this use case. I'm not looking for 10 or 30 or 100 addit...
ajv‭ wrote over 3 years ago

I did see --more, but I don't think it suits this use case. I'm not looking for 10 or 30 or 100 additional commits; I'm looking for "however many are needed to cover all commits that differ between the branches."

Moshi‭ wrote over 3 years ago

ajv‭ What do you mean by that? Anything past the common ancestor, basically by definition, will not differ between the branches

ajv‭ wrote over 3 years ago · edited over 3 years ago

After experimenting a bit, it looks like I only run into a problem if the tip of one branch is a merge of the other. e.g. consider a history like this:

master  *---*---A---B---*
             \           \
topic         a---b---c---*

If I then do git show-branch master topic, it doesn't include a, b, and c, even though those commits are not ancestors of master.

(updated post to include this)

Moshi‭ wrote over 3 years ago

ajv‭ Ah, merges do complicate things. I don't really think that there is a way around that though, at least with show-branch. The only workaround I can think of at the moment is using something like git show-branch master topic^ to essentially undo the merge in the eyes of git-show-branch, but that doesn't work for more than one merge and in any case probably has its own pitfalls.

If all you want is a pretty output, you could try using git log --graph?

ajv‭ wrote over 3 years ago

git show-branch master topic^ is how I eventually dealt with the case I was facing, but as you say, that has its own issues. I do use git log --oneline --graph --boundary master...topic a lot, and that's often good enough, but for nontrivial histories it's hard to visually pick out which commits are on which branch.

I keep my own history rigidly clean, but my team are not git experts and sometimes break things when trying to clean their own. So I have to inspect messy histories more often than I'd like.