好吧,我正在做一个大学项目,我们使用git,我们有一个规则,每个功能使用自己的分支,完成后合并到develop。我的同事从另一个特性分支开始了一个特性分支。这个特性(特性2)与特性1的分支没有联系。
I <-feature3
/
A--B--C----H <-develop
\ /
D---E--F <-feature1
\
G <-feature2
现在我的特性中需要提交G的东西,所以我把它合并到特性3中,然后才意识到这样做会得到提交F的东西(我以为它应该是基于开发的)。
I--J <-feature3
/ |
A--B--C----H | <-develop
\ / |
D---E--F | <-feature1
\ /
G <-feature2
所以现在提交J包含了提交F和G(而且这张图显示的是原始状态,而不仅仅是本地回购)。有没有办法把特性2重写成下面的图,而特性3失去提交F?
I--J <-feature3
/ /
/ G <-feature2
/ /
A--B--C----H-/ <-develop
\ /
D---E--F <-feature1
另外,这个变化可以推送到原点吗?
听起来你描述的是一个cherry-pick。它并没有像你的最终图那样做,但是,那个图似乎没有必要精心设计。G的cherry-pick确实能抓住从F到G的变化,并把它们贴在J之后,这听起来像是你真正想要的。