在其他人推送他们的更改后,将推送的git提交到另一个分支

时间:2012-06-22 09:15:14

标签: git

我已经向主人提交了一些代码,而实际上我必须在一个单独的分支中进行。更糟糕的是,我推动了这些变化(更确切地说,做了一个svn dcommit,但这不应该有任何区别)并且有几个人在我之后将他们的变化推向了主人。这就是大师现在的样子:

A (theirs) - B (mine) - C (mine) - D (mine) - E (theirs)
                                              ↑
                                              master

我想将我的提交移动到一个单独的分支,使其看起来像这样:

A (theirs) - E (theirs)
|            ↑
|            master
|
+ - B (mine) - C (mine) - D (mine)
                          ↑
                          newbranch

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

SVN永远不会忘记。您只能用新历史记录替换现有的“主干”。我可以告诉你如何使用SmartGit

来做到这一点

我建议你使用cherry-picks:在这种情况下,svn:mergeinfo将被正确翻译。

  1. 我想你是主人并且没有本地变化。将主设备重置为A(本地 - >重置,找到A)。
  2. 现在您需要重新应用E.打开日志,找到E - >右键单击 - > cherry-pick(在Cherry-pick& commit对话框中)。
  3. 您现在可以推送主人更换您的行李箱:Remote->“推进先进”,选中“强制”复选框。
  4. 现在树干是正确的。创建一个分支“newbranch”并切换到它。
  5. 再次打开日志,查找并选择提交B,C,D - >右键单击 - >樱桃挑(Cherry-pick&再次提交)。
  6. 按下按钮。在可能出现的对话框中选择“按新推”。