5

我有一个糟糕的合并,直到我将它推送到 GitHub 之前我才知道这是一个糟糕的合并,现在我不知道如何撤消/恢复它。

故事是这样的:

我打开了两个不同的分支并对这些分支进行了一些更改。过了一会儿,我决定将这些分支合并回主分支,并$ git merge branch_name用于此目的。我合并了第一个分支,然后检查了 master 分支的日志:该分支上的所有提交都在 master 上。然后我继续通过相同的命令合并第二个分支。然后我再次检查了 master 的日志,在那里我看到了我合并的分支上的提交,包括一个带有以下注释的提交:“合并分支分支名称”。当我合并另一个分支时,没有包含这样的评论。

长话短说,问题在于 git 将第一个分支的提交合并到 master 就像它们已经是 master 的提交一样。当您检查来自 'GitHub' 的网络图或来自 'gitg' 的图时,没有留下第一个分支的痕迹,但它的提交显示为 master 分支的提交。第二个分支没有问题:它单独显示并按预期合并。另请注意,在运行合并命令后,我继续删除分支$ git branch -d branch_name,不幸的是,这是最紧迫的事情。

现在我想回到我连续两次合并之前的位置。任何帮助表示赞赏。如果您评论为什么会发生这种情况,那也会令人愉快。

4

1 回答 1

4
  1. 找到作为您删除的旧主题分支的头部的提交。他们应该是合并提交的两个父母。让它们再次变成分支(git branch或者git checkout -b会很好地完成这个技巧)。

  2. 用移master回原来的位置git reset。此时,您回到了合并之前的起点。

  3. 下次合并时,使用git merge --no-ff. 即使 Git 不需要,这也会创建一个合并提交。

我几乎总是git merge--ff-onlyor一起使用--no-ff

于 2013-02-21T09:13:00.110 回答