合并从分支到不同分支的更改而不合并分支

时间:2015-07-14 03:33:51

标签: xcode git merge

我有一个流程,我将在那里开展单独的开发工作。然后分支机构将它们合并到“稳定”状态。完成后的主分支。然后,我将为从master创建的下一个开发分支创建一个新分支。这确保了每个开发分支始终包含最新的稳定更改。但我犯了一个错误。我忘了将开发分支合并到master中,但后来我从master创建了一个新的分支并且对它进行了很多工作。所以这个有很多变化的新分支并不是最新的稳定变化。

我继续将先前的开发分支合并为主 - 我忘了合并。现在我需要将master中的更改合并到我最新的开发分支中。但我实际上并不想将主分支合并到dev分支中,带来了它的所有历史记录。我希望这些分支保持独立,我只想比较两个分支之间的差异,并将来自master的相应代码合并到dev分支中作为单个新提交。我知道会有冲突。怎么能实现呢?

如果可能的话,我宁愿用Xcode的源代码控制来直观地进行比较和选择更改,但如果没有使用终端就可以了。

2 个答案:

答案 0 :(得分:0)

如果我了解你的情况:

  • 您是从主人那里创建了一个功能分支。
  • 您将新作品合并为主作品("新"此处使用的作品与您创建要素分支时的作品不同)。
  • 您现在希望确保您的功能分支是最新的,当前掌握了什么,但不想实际合并主人。

在这种情况下你可以做的是rebase你的分支对抗主人。

# When on your feature branch:
git rebase master

这将确保您在master上存在的任何新工作之后预先完成的工作。它还会重写历史记录,因此如果您已经在任何时候推送了该功能分支,那么您必须强制推送它以确保维护正确的历史记录。

澄清我的最后一点:当你通过创建一个类似于另一个提交的提交来修改你提交的overwrite the history时,但它与它不同(不同的祖先) 。

这里的主要指导原则是历史已经发生变化,如果该历史记录已发布,您将需要确保已发布而非的历史记录,以便历史记录显示为应该关于rebase操作。

答案 1 :(得分:0)

合并时可能需要使用--squah修饰符。这将合并代码,但不会创建合并两个分支的历史记录的提交。

请参阅http://git-scm.com/docs/git-merge