查看两个分支之间的差异,但忽略每个分支的一些历史记录?



问题描述

我从下面开始:

-A-B-...-E Working Branch 

H-...-I-J-K-L Feature Branch

我想取J, K和L,在我的工作分支(开发分支的副本)上重新设置它们,然后在工作分支上进行更多更改以使一切正常工作。然后,我希望能够查看我所做的所有更改,以"使一切正常工作"。(并且只有这些变化)。

问题详解

首先,我将base和squash:

-A-B-...-E-F Working Branch 

H-...-I-J-K-L Feature Branch

其中F是J-K-L压缩在一起(有一些合并冲突解决)。到目前为止一切顺利。现在我需要在E上做额外的改变(G-N-O),使一切都能工作,因为A到E的改变

-A-B-...-E-F-G-N-O Working Branch 

H-...-I-J-K-L Feature Branch

我要把F G N &把它们更好地组织成一系列新的提交,我们称之为X-Y-Z

-A-B-...-E-X-Y-Z Working Branch 

H-...-I-J-K-L Feature Branch

现在我想看到所有的变化,我不得不在G, N和O更新特性分支我特性分支,连同所有的合并冲突解决应用F .我必须要做我认为git range-diff I..L E..Z可能是正确的,但是因为我重组做减法X y z,git range-diff给了我坏的差别我想因为它试图使F与X,可以这么说,但我真的只有感兴趣dif结束状态(在L,如果我将--creation-factor设置得非常低,它会给我一个完美的描述,告诉我哪些提交被删除了,哪些提交被添加了,但这对我没有帮助,我想知道文件的内容是如何改变的。

如果我没看错的话:

X-Y-Z可以在I之上重新建立(可能被压扁)。

一旦完成,检查git diff L Z'只包含您想要保留的更改。

如果确认了这一点,您可以:

  • L之上将更改分组为一次提交:
git reset --soft L
git commit
  • 或将Feature分支移动到Z'
git branch -f Feature Z'

相关内容