如何确定某Git分支独有的提交(排除继承自其他分支的提交)
嘿,要找出某个Git分支独有的提交——也就是那些完全属于这个分支、没有从其他分支继承过来的提交,我这儿有几个实用的方法,都是日常工作里经常用到的:
1. 用git log直接对比分支
这是最直接的方式,比如你要找feature-branch相对于main分支独有的提交,只需要在终端里敲:
git log main..feature-branch
这个命令会列出所有存在于feature-branch但不存在于main的提交。要是你想反过来找main独有的提交,把分支顺序换一下就行:git log feature-branch..main。
要是觉得输出太啰嗦,加个--oneline参数,让每条提交只显示简短哈希和提交信息,看起来清爽很多:
git log --oneline main..feature-branch
2. 用git cherry精准筛选未合并的独有提交
如果你的分支是从上游分支(比如main或者develop)拉出来的,git cherry能帮你精准定位那些还没被上游合并的独有提交:
git cherry main feature-branch
输出里,+开头的就是当前分支独有的提交,-开头的则是已经存在于上游分支的提交(可能是通过变基、合并同步过来的)。要是你当前就在目标分支上,还可以省略第二个分支名,直接写:
git cherry main
3. 用可视化工具直观查看
如果你更习惯图形化界面,Git自带的可视化工具gitk就能帮你直观看到分支差异:
gitk main..feature-branch
另外像VS Code的GitLens插件这类工具,会直接在提交历史里标注出哪些是当前分支独有的提交,甚至能高亮显示,非常方便。
小提醒
要注意选对对比的基准分支哦!比如你的特性分支是从develop分支拉出来的,那对比的时候就应该用develop而不是main,不然会把从develop继承的提交误当成独有提交~
内容的提问来源于stack exchange,提问作者Akash Hajeri
相关产品推荐
相关产品推荐

