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

在其他人推送更改后,移动推送git将提交到另一个分支,git,Git,我已经向主人提交了一些代码,而实际上我必须在一个单独的分支中执行它。更糟糕的是,我推送了更改(更准确地说,我做了一个svn dcommit,但这不会有任何区别),有几个人在我之后将更改推送到主控器。这就是大师现在的样子: A (theirs) - B (mine) - C (mine) - D (mine) - E (theirs) ↑

我已经向主人提交了一些代码,而实际上我必须在一个单独的分支中执行它。更糟糕的是,我推送了更改(更准确地说,我做了一个
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

有什么方法可以做到这一点吗?

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

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

  • 我想你在master上,没有本地更改。将主机重置为A(本地->重置,查找A)
  • 现在您需要重新应用E。打开日志,找到E->右键单击->樱桃选择(在樱桃选择和提交对话框中)
  • 您现在可以按master来更换中继:Remote->“push advanced”,选中“Force”复选框
  • 现在主干是正确的。创建一个分支“newbranch”并切换到它
  • 再次打开日志,查找并选择提交B、C、D->右键单击->樱桃选择(樱桃选择并再次提交)
  • 按推。在可能出现的对话框中,选择“按新方式推送”