问题描述
我从下面开始:
-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'