找出 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 的建议:
- 在您的本地克隆中,将
master
和 feature
上的 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
.
切入依赖项
我们有一个功能分支已经有一段时间未能通过某些测试。但是当它从 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 的建议:
- 在您的本地克隆中,将
master
和feature
上的 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
.