如何安全地从master中删除已从分支中删除的文件?

时间:2017-01-26 18:57:11

标签: git git-rm

请参阅下图:

my-branch      A---B---C---D
              /     \
master       E---F---G

B合并到G期间,我无意中将文件添加到mastermy-branch使用D git rmC删除了文件。不幸的是,我在git rm工作,尚未准备好与主人合并。我可以安全地master my-branch中的文件并将master(文件已被删除的地方)合并到B之后吗?

换句话说,通过将GG合并,我在commit git rm添加了我不想要的文件。这些文件my-branch来自D D,但我不想将C合并到主文件中,因为p:dataTable包含的更改是doSomething()还没有准备好。最好的方法是什么?

2 个答案:

答案 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,那么任何提取它的人都会得到包含来自CD的现有更改的合并。在这种情况下,我会选择D到master上,以便在合并my-branch之前删除文件,然后在合并到master时处理一个简单的合并冲突。 IMO最好稍后处理冲突,而不是其他人现在处理冲突。

答案 1 :(得分:0)

如果您对使用交互式rebase不熟悉或不舒服,可以在commit G和cherry-pick D创建一个分支。然后将您的分支合并到master中。