【问题标题】:Git show the difference between two git-diffGit 显示两个 git-diff 的区别
【发布时间】:2021-05-05 16:24:01
【问题描述】:

场景

  • 有一个临时分支(temp1)独立运行,提交A..B..C..D..E..
  • 还有另一个功能分支 (feature1) 与其他提交 P..Q..R..S..T
  • 现在,开发人员从 temp 分支中挑选提交“C”并合并到 feature1 中(假设:没有任何冲突,因为它们是完全不同的代码区域)以获得 P..Q..R..S..T..C1 (注意:这个 C1 与 C 过去有相同的变化,但只是不同的提交 ID,因为我们知道提交在 GIT 中是不可变的)

现在,作为开发人员,我想验证 T..C1B..C 之间的差异,以确保每个内容都完全相同。

我已经走了多远?

  1. 我可以从 temp 分支看到 C 中所做的更改:$git diff C C~1

  2. 我可以从 feature1 分支看到 C1 中所做的更改:$git diff C1 C1~1

  3. 当与 --name-only 属性一起使用时,这会显示确切的文件

    $git diff C C~1 --name-only

    $git diff C1 C1~1 --name-only

问题: 我想看看 (1) 和 (2) 之间的差异,以验证内容是否相同。

【问题讨论】:

  • 嘘! Git 提交是snapshots, not diffs。所以 C1 没有“与 C 相同的变化”,但 T..C1 与 B..C 具有相同的变化。我认为这不会从根本上改变您的问题,但我认为应该指出这一点。
  • 是的,你是对的。我可以改写那个词......但基本上你明白我在寻找什么......即这些变化是否相同?
  • 我只需将两个差异输出通过管道传输到文件并执行简单的diff diff1.txt diff2.txt,但可能有更简单/更好的方法。
  • @JoachimSauer T..C1 是否应该没有与 A..B..C 相同的变化(而不仅仅是 B..C)?因为,正如您所说,您合并的不仅仅是一个提交的更改。

标签: git github git-diff


【解决方案1】:

请参阅Joachim Sauer's comment,了解可能是最简单和最有用的方法。但是请注意,从 Git 2.19 开始,Git 包含了一个新命令 git range-diff,它的目标有点不同,但可以做这种事情。

由于其目标不同,调用git range-diff 的最简单方法(使用三点符号)不会满足您的要求,但git range-diff C~..C C1~..C1 非常简单。详情请见the git range-diff documentation

(出于自动化目的,请考虑使用git patch-id。一个简单的git show <em>hash</em> | git patch-id 即可获得补丁ID。)

【讨论】:

    猜你喜欢
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2013-04-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    相关资源
    最近更新 更多