【问题标题】:Diff between commit deltas, not commits themselves提交增量之间的差异,而不是自己提交
【发布时间】:2018-12-21 01:20:57
【问题描述】:

我有两个分支来自提交 a:

a - b - c \ d - e

我想看到的是ce 中引入的更改 之间的差异。我可以很容易地查看ec 本身之间的差异,但这不是我想要的,因为该差异包括bd 中引入的更改,并且这两个提交彼此不同。抽象地说,我想我想要的是类似的东西

diff(diff(b, c), diff(d, e))

有什么好办法吗? ce 中引入的编辑可能仅相差 50 行,所以不是很多,问题是这 50 行信号在 b 和之间的差异导致的 ~1000 行噪声中丢失d。感谢您的帮助!

【问题讨论】:

  • c 和 e 是否非常相似但又有些不同?还是c和e完全不相关?
  • 有一个程序可以区分差异,称为“interdiff”。它不是 Git 的一部分,但你可以安装它,看看它是否能满足你的需求。

标签: git diff delta


【解决方案1】:

感谢 cmets,interdiff 线索足以帮助我找到已回答的问题 How do I get the interdiff between these two git commits?

简单的答案 (https://stackoverflow.com/a/17793943/5156887) 是使用
diff <(git log -p -1 c) <(git log -p -1 e)

如果你有 git 2.19,更好的答案 (https://stackoverflow.com/a/52278675/5156887) 是内置的 git range-diff。我没有那个新版本,所以找不到。

【讨论】:

  • 这是我很久以来见过的最好的自我回答。研究得很好,内容丰富。此外,出色的工作平衡了指向其他答案的链接与总结链接的内容。
  • 我忘记了新的范围差异功能。不过请注意,它比简单的 interdiff 要复杂得多。
  • 为什么“简单”版本不使用git show,即diff <(git show c) <(git show e)之类的东西?似乎更简单。
猜你喜欢
  • 2011-03-23
  • 1970-01-01
  • 2021-09-12
  • 2021-01-17
  • 1970-01-01
  • 1970-01-01
  • 2021-04-28
  • 2015-05-14
  • 2016-04-10
相关资源
最近更新 更多