获得多个非连续提交的累积 git 差异

Get a cumulative git diffs for multiple non-consecutuve commits

我想知道是否有办法获得多个非连续提交的累积 git 差异。

例如,我可以使用以下方法获取每次提交中更改的内容:

git diff 123456^ 123456

其中“123456”是一个 git 哈希值。

我可以针对多次提交执行此操作。但我现在想做多个差异并将输出合并为一个。

举个例子,

git diff 123456^ 123456
git diff abcdef^ abcdef

但将差异合二为一。但是“123456”和"abcdef"不是连续提交。

更新: 假设文件 xyz 中的一行已更改:

In commit 123456: from "foo" to "bar"
in commit abcdef: from "bar" to "oof"

我只想看到它在这些提交之后从 "foo" 更改为 "oof"。

git diff 123456 abcdef 对我不起作用,因为我不想在 123456 和 abcdef 之间进行所有更改。

我不想做任何事;只是想检查代码的安全性。

我敢肯定有人有更聪明的方法,但您可以尝试将您选择的所有提交压缩为一个,然后对那个进行比较。你可以通过 --cherry-pick--no-commit 来做到这一点。获得最终结果后,您可以 git diff HEAD 了解其与基本版本的差异(假设您将自己重置为该位置)。

git diff <commit-A> <commit-B> 可以在 AB 之间生成差异,即使 AB 位于不同的分支或来自不同的回购协议。