找出 2 组 git 提交之间的相同差异

Find the same differences between 2 sets of git commits

我们有一个功能分支已经有一段时间未能通过某些测试。但是当它从 master 那里拿走时,那些测试通过了。

最近对 master 进行了一些更改,相同的测试开始失败。有一些不相关的更改,但在我的功能分支和现在的 master 分支中一定发生了一些事情。

我想做的是自测试开始失败以来在我的分支上进行 2 次提交和在 master 上进行 5 次提交并比较它们,寻找一个共同的变化,感觉几乎与三向相反合并:p.

有没有快速的方法来做到这一点,目前我只是在观察提交的累积 git diff --name-status!

git log 有一个 --cherry-mark 选项,它突出显示了引入完全相同更改的提交:

# will mark with '=' commits cherry picked between the two branches :
git log --boundary --graph --cherry-mark --oneline master...feature

您可以结合@mkrieger1 的建议:

  • 在您的本地克隆中,将 masterfeature 上的 big-ish 提交分成更小的提交(也许每个提交都更新一个模块?),
  • 运行 git log --boundary --graph --cherry-mark --oneline 在两个重做的分支上

但是请注意,仍然会有很多漏洞:假设您所谓的“paket”在 feature 上从 2.0.1 更新到 3.0.3,并且从 2.0.1 到 master 上的 3.0.5,你不会用 --cherry-mark.

发现这个

您最好还是找到一种方法来独立 运行 失败的测试,并使用 git bisect.

切入依赖项