两个补丁之间的差异

Diff between two patches

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

更新

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

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

diffdiff = !git stash save -u -q &&
    git apply  && git add -A && git commit -q -m"1" &&
    git reset --hard HEAD@{1} -q &&
    git apply  && 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 参数。

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