将前两个条目从主分支移动到现有的合并功能分支

时间:2017-06-28 17:36:49

标签: git tortoisegit

我知道我之前已经讨论过这个问题,但我总是很难做到这一点!

这是我的日志:

Show Log

这就是我想要做的事情:

  1. 将2个顶部条目移至工作簿 - 月度数据验证分支。
  2. 从顶部条目编辑该秒的消息。 应为错误
  3. HEAD的唯一条目应该是完成标准化...
  4. 所以我想最终:

    Completed ...
    \
     \
      Introduced...
      Bug fix...
      Added new help button..
         down to 
      Added new window
     /
    /
    Standardised the placement...
    

    使用 TortoiseGit实现此目的的最简单方法是什么?

    感谢。

    更新

    不知怎的,我设法把它搞砸了。在第一个答案之后,一切顺利。最后,我删除了本地和远程的功能分支,并对主机进行了强制推送。事情似乎正确,但我失去了一些代码更改。所以我不得不再次添加一个新条目以使其正确:

    Log

    所以我想我现在必须离开它。从技术上讲,我必须重做的那些更改是提交的一部分,所以我很困惑。

    我有原始源文件夹的副本,功能分支仍在那里,所以我们可以再试一次,但我不确定我哪里出错了。

    我知道出了什么问题。我希望结束的消息是在RC文件的其他更改之前。因此它抹去了之前所做的改变。我不明白为什么它没有引起任何冲突。

2 个答案:

答案 0 :(得分:2)

有几种方法可以做到。

一种方法是切换到workbook-monthly-data-validation分支并将其重置(硬)到您希望在此分支上进行的最新提交(首先切换到它然后使用上下文菜单进行硬重置)。

然后选择" Rebase on"在您要将其他两个放到的提交的上下文菜单上。

在rebase对话框中,为要更改提交文本的提交选择edit,然后在合并提交中选择skip。

现在,您可以根据需要在workbook-monthly-data-validation分支上进行所有提交。

之后你必须修改master:切换到它并将其重置为功能分支之前的最后一次提交。然后再次合并功能分支。

如果在发现错误并在那里提交更改时切换回刚刚合并的分支,则可以避免此类广泛的变基会话。然后,您可以决定是否重置主分支(在功能分支之前提交并再次合并),或者只是将功能分支再次合并到主分支。这看起来像下面的szenario:

| Bugfix (merge)
| \
|  | Introduced...
|  | Bug fix...
| Completed ... (merge)
| \|
|  | Added new help button..
|  |    down to 
|  | Added new window
| /
| Standardised the placement...

通过这种方式,您仍然可以看到哪些提交属于您的功能分支,但您不必进行如此多的rebase / resets和强制推送。

答案 1 :(得分:1)

我不能保证这是最好的解决方案,但它有效(这是最低要求,对吧?)。时间和其他答案将告诉我们是否有更好/更快的方式。

  • 切换/结帐'工作簿'分支
  • 按住Ctrl键并点击 - 选择最近2次提交(主要'您希望移至'工作簿'),右键单击,Cherry选择这些提交

您将获得Rebase用户界面。

  • 将您想要更改的邮件的一个提交更改为"编辑",将另一个提交更改为"选择" (默认)
  • 执行此操作。

在您的示例中,您之前的提交意味着留在' master' ("完成标准化...")这可能会导致此操作期间发生冲突,具体取决于每个提交受影响的文件。如果是这样,请确保不要包含您未提交到“工作簿”的提交内容的更改。

无论哪种方式,Tortoise也会暂停,让您编辑您设置为编辑的提交的消息。只需更改文本字段中的消息,然后单击“提交”继续。

此时,所需的提交将存在于' master'并且'锻炼'。现在删除' master'

中的那些
  • 切换/结帐' master'
  • 右键单击"已完成..."提交(合并后第一个),重置'主'对此,选择硬重置