撤消快进合并

时间:2013-02-21 09:07:11

标签: git github git-merge

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

故事是这样的:

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

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

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

1 个答案:

答案 0 :(得分:3)

  1. 查找您删除的旧主题分支的头部提交。他们应该是合并提交的两个父母。再次将它们分成几个分支(git branchgit checkout -b可以很好地完成这一操作。)

  2. 使用mastergit reset移回原来的位置。此时,您回到合并前的位置。

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

  4. 我几乎总是将git merge用于--ff-only--no-ff