0

我和其他几个开发人员一起从 master 分支开始,我们遵循一个很好的工作流程,我们创建一个新的特定于问题的分支,将其合并回开发,并在少数功能合并后开发到 master。

有时我们也会在 master 中进行修补程序,然后将 master 合并到 develop 中以避免将来的合并冲突。

问题

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

所以,让我和你分享一些信息。

掌握

  • 修补程序-1
  • 修补程序 2
  • 修补程序 3
  • 合并发展
  • 还原合并开发

当前状态:好的

开发

  • 从大师开始
  • 工作
  • 工作乙
  • 合并来自 test_1 的工作
  • 合并来自 test_2 的工作
  • 合并master到develop
  • 工作c
  • 工作d
  • 工作e

如果您关心时间顺序,那么 master 的最后 2 次提交是最新的更改。

我的愿望

我希望有一个选项可以恢复合并,因为我完全空白。

选项:

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

重要的一点是我可能没有得到全貌,因为我刚刚读到合并后两个分支共享历史,当我在 bitbucket 中提交哈希时,我在所有提交中看到 master。我猜提交已经转移到master。

任何帮助或见解都会非常有帮助。谢谢。

4

1 回答 1

0

你在正确的方向。Git 是单向的,没有退路的余地。

您可以使用您指定的第二个选项。您必须在 marge 提交之前创建一个分支。然后在这个分支中合并master。之后,您应该删除开发分支并重命名这个新创建的分支。

另一种方法是您可以从 master 创建一个新分支并挑选更改(您也可以合并您为功能/错误创建的分支,而不是进行挑选)您在开发分支中所做的并再次备份开发,删除develop并将新创建的分支重命名为develop。

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

于 2019-05-08T11:15:18.960 回答