两个补丁之间的差异

时间:2016-03-16 10:11:53

标签: git diff git-flow

让我们假设我有一个开发分支,我在一些功能分支中工作,我有一个或多个提交,我不断修改提交以及使用其他一些分支对它们进行rebase(以保持提交历史记录清洁以备将来使用) )。在每个阶段,我都相对于开发在本地做差异。所以我有一组差异,我想看看它们之间的区别。我怎么能这么容易呢?我可以使用什么样的git命令序列?

更新

解决方案是有两个与开发相关的差异。在开发中拥有存储库的副本,应用第一个差异。有花药副本并应用另一个补丁。使用一些comarison工具并比较两个存储库。这将是我期望的结果。这种方法的问题是我需要至少有两个存储库副本,并使用一些工具来制作目录的差异。另一种可能更好的方法是使用两个分支,应用补丁并提交更改,然后比较分支。问题是:在git命令中有更简单的东西吗?有点喜欢这个分支,还有两个差异文件,给我带来差异吗?

1 个答案:

答案 0 :(得分:3)

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

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} && :

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

git diffdiff <diff_file_1> <diff_file_2>

不是使用zsh和bash shell在osx上测试的多平台解决方案。 如果你可以手动完成它,那就更简单了,这里的复杂功能很多就是提供一种万无一失的解决方案。第一行输出也是噪音,好像git stash pop不遵守--quiet参数。

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