如何用Git追踪本地分支流向?本地生成分支树状图并验证来源
没问题,我来帮你一步步解决这些Git分支相关的需求!
一、生成本地分支树状图(和你看到的类似)
Git自带了多种命令可以在本地生成分支的树状结构,不用依赖外部工具:
最常用的文本模式分支图:在终端里运行这个命令,会以简洁的单行格式展示所有分支的提交历史和树状关系:
git log --graph --oneline --all解释一下参数:
--graph:添加分支结构的ASCII图形--oneline:把每个提交压缩成一行显示(哈希值前缀+提交信息)--all:显示所有分支的历史,而不只是当前分支
更详细的装饰版:如果想看到分支名、标签等信息,加上
--decorate参数:git log --graph --oneline --all --decorateGUI可视化工具:如果更喜欢图形界面,直接运行:
gitk --all这个会弹出一个窗口,直观展示所有分支的树状结构,还能点击查看提交详情。
二、确认当前分支是否源自master
有几种简单的方法可以验证这一点:
查看分支与master的共同祖先:运行这个命令,会输出当前分支和master分支的最近共同提交哈希值。如果这个提交是master上的某个历史节点,说明你的分支确实是从master分出来的:
git merge-base master HEAD你可以接着用
git show <哈希值>查看这个共同提交的详情,确认它属于master的历史。查看从master分叉后的提交:运行这个命令,如果有输出,说明当前分支在master的基础上有新的提交(也就是从master分叉出来的);如果没有输出,说明当前分支和master完全同步:
git log --oneline master..HEAD查看分支创建记录:如果是通过
git checkout -b 分支名 master创建的分支,你可以通过reflog查看创建痕迹:git reflog show --date=iso HEAD输出里如果有类似
checkout: moving from master to 你的分支名的记录,就可以确认分支是从master创建的。
三、追踪本地分支流向
除了上面的分支图,还有这些命令可以帮你理清分支之间的关系:
查看所有分支的最近提交:快速了解每个分支的最新状态:
git branch -v查看已合并/未合并的分支:
- 查看哪些分支已经合并到当前分支:
git branch --merged - 查看哪些分支还没合并到当前分支:
git branch --no-merged
- 查看哪些分支已经合并到当前分支:
对比两个分支的差异流向:用三点语法可以查看master和当前分支各自独有的提交,箭头会标记提交属于哪个分支:
git log --left-right --graph master...HEAD其中
<开头的提交属于master,>开头的属于当前分支。
内容的提问来源于stack exchange,提问作者Ahmed B. Hameed

