Git在复杂的情况下(合并,还原,合并等)还原合并提交

时间:2019-05-08 11:02:21

标签: git merge bitbucket-cloud

我从master分支以及其他一些开发人员开始,我们遵循一个不错的工作流程,在该工作流中,我们创建了一个特定于新问题的分支,将其合并回开发,然后再将几个功能合并到master。

有时候,我们还会在master中进行修补,然后将master合并到开发中,以避免将来发生合并冲突。

问题

在某个时候,我将master合并回develop,但是在解决合并冲突的同时,删除了一些在developer中完成的代码。现在我们意识到了所创建的问题,所以现在我们需要撤消该特定合并。

所以,让我与您分享一些信息。

大师

  • hotfix-1
  • hotfix-2
  • hotfix-3
  • 合并开发
  • 还原合并开发

当前状态:确定

开发

  • 从大师开始
  • 工作
  • 工作b
  • 合并test_1中的工作
  • 合并test_2中的工作
  • 将主人整合到开发中
  • 工作c
  • 工作d
  • 工作e

如果您担心按时间顺序排列,则主服务器的最后2次提交是最新的更改。

我想要的

由于我完全空白,希望有一个还原合并的选项。

选项:

  1. 我尝试还原,但事实证明您无法还原合并提交
  2. 我想我可以在合并之前从提交创建一个新分支,然后在合并之后重播更改,然后将新分支合并回开发。这可能吗 ?可以让我继续我们的工作流程吗?

重要的一点是,我可能没有得到完整的图片,因为我刚刚读到,合并后两个分支共享历史记录,当我在bitbucket中提交哈希时,我在所有提交中都看到了master。我猜测提交已转移到主服务器。

任何帮助或见解将大有帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

您的方向正确。 Git是单向路径,没有退后的方法。

您都可以使用自己指定的第二个选项。您必须在进行marge commit之前创建一个分支。然后将母版合并到此分支中。之后,您应该删除开发分支并重命名这个新创建的分支。

另一种方法是,您可以从master创建一个新分支,然后对更改进行樱桃选择(您也可以合并为功能/错误创建的分支,而不是进行樱桃选择),这是在development分支中完成的,备份开发,删除开发并将新创建的分支重命名为开发。

我建议使用git rebase进行这种合并,以获得更好的历史记录https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase