获取多个非连续提交的Git累积差异

13

我想知道是否有一种方法可以获取多个不连续的提交的累积git差异。

例如,我可以使用以下命令获取每个提交中的更改:

git diff 123456^ 123456

其中“123456”是Git哈希值。

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

例如,

git diff 123456^ 123456
git diff abcdef^ abcdef

但将diff合并成一个。但是"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之间的所有更改。

我不想提交任何东西;只是想审核代码以确保安全。


你使用的是Windows还是Unix操作系统? - Enrico Campidoglio
2个回答

4

我相信有更聪明的方法,但你可以尝试将所有选择的提交压缩成一个提交,然后对该提交进行差异比较。你可以使用--cherry-pick--no-commit来实现这一点。一旦你有了最终结果,你可以用git diff HEAD命令得到它与你的基础版本的差异(假设你已经重置到那个位置)。


2
谢谢您的回复,但我的要求只是为了安全代码审查目的而查看更改。我不需要提交任何东西。 - DDS
2
你不会进行提交。--no-commit 会阻止这个操作。 - David Neiss
实际上,无论是否使用-n选项,这都是进行操作的最佳方式,以便在工作树中执行操作,而不是作为一系列提交。 - torek
我认为你的方法是最接近我想要做的...但我不认为仅凭git就能实现我真正想做的事情。 - DDS

-3

git diff <commit-A> <commit-B> 可以生成 AB 之间的差异,即使 AB 在不同的分支或来自不同的仓库。


谢谢,但这不是我想要的。我已经知道如何做了。 - DDS
@DDS 现在你知道如何做了,能否在这里分享一下呢? - Krizz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接