显示所选git提交的组合差异

显示所选git提交的组合差异,git,version-control,Git,Version Control,我有一个有很多变化的存储库。我想回顾与特定问题相关的更改。这些提交已经在主分支中,并且与不相关的提交交错。我可以通过消息中的特定文本识别这些有趣的提交。我还可以使用gitdiff命令查看单个更改。但是,我希望将它们视为单个补丁:如果第一次提交更改了一些行,而第二次提交又更改了它们,我不希望看到过渡状态。我也不希望看到来自无关提交的任何更改(除非有必要解决冲突) 我能想到的实现这一点的唯一方法是将整个树更新为首次提交之前的状态。逐个应用更改,然后根据基本修订应用工作目录 但是,如果包含的提交依赖于

我有一个有很多变化的存储库。我想回顾与特定问题相关的更改。这些提交已经在主分支中,并且与不相关的提交交错。我可以通过消息中的特定文本识别这些有趣的提交。我还可以使用
gitdiff
命令查看单个更改。但是,我希望将它们视为单个补丁:如果第一次提交更改了一些行,而第二次提交又更改了它们,我不希望看到过渡状态。我也不希望看到来自无关提交的任何更改(除非有必要解决冲突)

我能想到的实现这一点的唯一方法是将整个树更新为首次提交之前的状态。逐个应用更改,然后根据基本修订应用工作目录

但是,如果包含的提交依赖于未包含的提交,那么这将不起作用。我宁愿只包含来自其他提交的必要更改,而不是失败或必须手动解决冲突。输出将由人工读取,因此只要包含所有相关的更改,我就不关心如何处理冲突

如果在此操作之前我不必隐藏本地更改,那也太好了


如何避免这些问题并生成这样的补丁?

有一个名为
combinediff
的程序应该能够做到这一点;对您关心的每个更改进行区分,然后将它们全部提供给
combinediff
。它是
patchitils
包的一部分,在Linux上,它通常通过发行版的包管理器提供。源位于