【问题标题】:Diff between two patches两个补丁之间的差异
【发布时间】:2016-03-16 10:11:52
【问题描述】:

假设我有一个开发分支,并且我在某个功能分支中工作,在那里我有一个或多个提交,我不断修改提交以及使用其他一些分支对它们进行变基(以保持提交历史干净以备将来使用)。在每个阶段,我都会相对于开发在本地进行差异化。所以我有一组差异,我想看看它们之间的区别。我怎样才能轻松做到这一点?我可以使用什么样的 git 命令序列?

更新

解决方案是有两个与开发相关的差异。在开发中拥有存储库的副本,应用第一个差异。有另一个副本并应用另一个补丁。使用一些comarison 工具并比较两个存储库。这将是我所期望的结果。这种方法的问题是我需要至少有两个存储库副本并使用一些工具来制作目录差异。另一种可能更好的方法是使用两个分支,应用补丁并提交更改,然后比较分支。问题:在 git 命令中是否有更简单的方法来做到这一点?像拿这个分支和两个 diff 文件一样,返回我的 diff?

【问题讨论】:

  • 嗯,那里没有公认的答案,这些答案也不能回答我的问题。
  • 为什么不呢?在我看来,这两个答案都会满足您的要求:比较两个差异。请测试并详细说明结果与您的预期有何不同。
  • 我试图详细说明我的问题,第一个答案是补丁文件的差异,这不是我想要的,第二个答案使用 git 提交进行比较,在我的情况下,差异不在git 历史(它们已经被修改和/或重新定位)

标签: git diff git-flow


【解决方案1】:

您的第二个工作流程就是答案。这是一个可能的别名:

diffdiff = !git stash save -u -q &&
    git apply $1 && git add -A && git commit -q -m"1" &&
    git reset --hard HEAD@{1} -q &&
    git apply $2 && git add -A && git commit -q -m"2" &&
    git reset --hard HEAD@{1} -q && git stash pop -q &&
    git diff HEAD@{3} HEAD@{1} && :

在您要使用位于存储库外部的差异文件应用差异的分支上调用它。

git diffdiff <diff_file_1> <diff_file_2>

不是一个多平台解决方案,在 osx 上测试过,带有 zsh 和 bash shell。 如果您可以手动完成,它会简单得多,这里的大部分复杂情况是提供一种万无一失的解决方案。输出的第一行也是噪音,似乎 git stash pop 不遵守 --quiet 参数。

(编辑:不需要临时分支,所以我简化了别名。)

【讨论】:

  • 这个别名既疯狂又聪明!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
  • 2011-09-30
  • 1970-01-01
  • 1970-01-01
  • 2012-01-24
  • 2011-04-29
相关资源
最近更新 更多