2012-06-22 36 views
4

我已经向主人提交了一些代码,但实际上我必须在独立的分支中执行该代码。更糟糕的是,我推动了更改(更准确地说,做了svn dcommit,但这应该没有什么区别),并且有几个人将我的更改推给了主人。这是主人的样子现在:移动push git在其他人推送其更改后提交到其他分支

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

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

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

有没有办法做到这一点?

回答

3

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

我会建议你使用樱桃挑选:在这种情况下,svn:mergeinfo将被正确翻译。

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