git show-branch 是用于快速查看多个本地分支提交历史关系的轻量命令,通过星号标记展示分叉、合并及独有提交,支持 --all、--more、--sha1-name 等实用选项,但不显示远程分支且无图形界面。

git show-branch 是一个轻量但非常直观的命令,专为快速查看多个本地分支的提交历史关系而设计——它不依赖图形界面,却能清晰呈现分支何时分叉、是否合并、哪些提交是独有的或共享的。
理解 show-branch 的输出结构
执行 git show-branch branch1 branch2 branch3 后,输出分为两部分:
- 顶部是各分支名称(右对齐),每列对应一个分支,标记其最新提交(HEAD)位置
- 下方是按时间倒序排列的提交摘要,每行代表一次提交;左侧星号(
*)表示该提交属于对应列的分支,空格表示不包含 - 同一行出现多个
*,说明该提交被多个分支共同指向(即已合并或共祖)
例如,若某行在 main 和 feature 列下都有 *,说明该提交是两者当前共同可达的祖先之一。
常用组合与实用技巧
-
git show-branch --all:一次性列出所有本地分支的历史关系,适合快速扫描整体拓扑 -
git show-branch --more=10 main develop:强制显示最多 10 行提交(默认只显示前 10 个不同提交),避免被截断 -
git show-branch --sha1-name feature-a feature-b:用短 SHA-1 替代提交摘要,便于比对具体提交 ID - 配合
--no-merge可过滤掉已被合并的分支提示(较少用,但可简化输出)
识别分叉点与合并状态的关键信号
观察输出时重点关注三类模式:
- 纯单列星号:某提交仅出现在一个分支列下 → 该分支独有的新提交,尚未合并
-
多列连续星号:同一行多个
*→ 这是共同祖先提交,说明分支在此处或之前有交集 -
星号“断层”:比如
main列从第 5 行开始有*,而fix列直到第 1 行才有 → 暗示fix是从较新的main提交上创建的,分叉较晚
注意:show-branch 不显示远程跟踪分支(如 origin/main),如需对比,应先 git fetch 并创建对应本地分支(如 git branch origin-main origin/main)再使用。
替代方案与适用边界
git show-branch 轻快直接,但也有局限:
- 不支持交互式操作,也不能显示图形化树状图(此时推荐
git log --graph --oneline --all或gitk) - 无法直接看出 merge commit 的父提交关系,需结合
git show <commit>查看 - 对大量分支输出易混乱,建议一次比较 2–4 个相关分支,避免信息过载
它最适合日常开发中快速确认:“我刚在 feature 上改的几处,main 知道吗?”、“hotfix 是从哪次提交拉出来的?”——答案往往就在前五行输出里。


















