请参阅下图:
my-branch A---B---C---D
/ \
master E---F---G
从B
合并到G
期间,我无意中将文件添加到master
,my-branch
使用D
git rm
从C
删除了文件。不幸的是,我在git rm
工作,尚未准备好与主人合并。我可以安全地master
my-branch
中的文件并将master
(文件已被删除的地方)合并到B
之后吗?
换句话说,通过将G
与G
合并,我在commit git rm
添加了我不想要的文件。这些文件my-branch
来自D
D
,但我不想将C
合并到主文件中,因为p:dataTable
包含的更改是doSomething()
还没有准备好。最好的方法是什么?
答案 0 :(得分:2)
如果D commit只有rm'ed文件,那么我会将它移到C commit之前,然后将它合并到master中。
在这种情况下,git rebase -i HEAD~2
然后重新排序提交以将D放在C之前。然后您可以将D合并到主服务器中并最终使用
A---B---D---C
/ \
E---F---G---H
如果D有其他更改,那么您应该重做提交,以便它只有rm'ed文件,然后重新排序。
如果您已经发布了my-branch
,那么任何提取它的人都会得到包含来自C
和D
的现有更改的合并。在这种情况下,我会选择D
到master上,以便在合并my-branch
之前删除文件,然后在合并到master
时处理一个简单的合并冲突。 IMO最好稍后处理冲突,而不是其他人现在处理冲突。
答案 1 :(得分:0)
如果您对使用交互式rebase不熟悉或不舒服,可以在commit G和cherry-pick D创建一个分支。然后将您的分支合并到master中。