【问题标题】:Get a cumulative git diffs for multiple non-consecutuve commits获取多个非连续提交的累积 git 差异
【发布时间】:2019-01-01 12:27:42
【问题描述】:

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

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

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 之间进行所有更改。

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

【问题讨论】:

  • 您使用的是 Windows 还是 Unix?

标签: git github diff


【解决方案1】:

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

【讨论】:

  • 感谢您的回复,但我的要求只是为了安全的代码审查目的查看更改。我不需要提交任何东西。
  • 你不会提交。 --no-commit 阻止了这一点。
  • 这实际上是要走的路,不管有没有-n 在工作树中完成工作,而不是作为一系列提交。
  • 我认为你的方法最接近我想要做的......但我不认为我真正想做的事情不可能只用 git。谢谢
【解决方案2】:

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

【讨论】:

  • 谢谢,但这不是我想要的。我已经知道该怎么做。
  • @DDS 既然您知道如何做到这一点,您介意在这里分享吗?
猜你喜欢
  • 2017-06-24
  • 1970-01-01
  • 2022-10-02
  • 1970-01-01
  • 2018-11-09
  • 2019-02-28
  • 2021-07-24
  • 2021-04-07
相关资源
最近更新 更多