让我们假设我有一个开发分支,我在一些功能分支中工作,我有一个或多个提交,我不断修改提交以及使用其他一些分支对它们进行rebase(以保持提交历史记录清洁以备将来使用) )。在每个阶段,我都相对于开发在本地做差异。所以我有一组差异,我想看看它们之间的区别。我怎么能这么容易呢?我可以使用什么样的git命令序列?
更新
解决方案是有两个与开发相关的差异。在开发中拥有存储库的副本,应用第一个差异。有花药副本并应用另一个补丁。使用一些comarison工具并比较两个存储库。这将是我期望的结果。这种方法的问题是我需要至少有两个存储库副本,并使用一些工具来制作目录的差异。另一种可能更好的方法是使用两个分支,应用补丁并提交更改,然后比较分支。问题是:在git命令中有更简单的东西吗?有点喜欢这个分支,还有两个差异文件,给我带来差异吗?
答案 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参数。
(编辑:不需要临时分支,所以我简化了别名。)