git merge的那些事

97 阅读1分钟

背景

ut优化: 根据提交的代码判断是来自哪个模块的修改就跑哪个模块的ut用例

操作步骤

得到mr提交代码的差异文件 1: git merge-base --all dev master得到fork_point 2: git diff --stat fork_point dev

Q&A

  1. 直接用git diff dev master行不行?

image.png 不行, 因为master分支一直有人在合入代码, 这时候diff得到的结果的不只包含dev分支提交的代码,还包含了master后续提交的代码 2. merge-base会不会得到多个fork_point? 有可能, 下面是一种构造方法, 一般不存在这种场景, 可以忽略

image.png 3. 开发者一般merge的场景是: 以master分支为基准checkout出dev分支, 提交变更后,会再次merge master后,最后提交mr

image.png 这种场景下, git merge-base 得到的fork_point是途中的b点, 经验证不会丢失dev之前提交的commitid

参考资料

git-repo.info/zh_cn/2020/…