2017-06-28 65 views
1

正如你可以在图片中看到的,我是在功能forum_kolo_3工作,我决定完成该功能,并把它合并开发(但没有推更改远程开发,所以它只是局部改变),比我意识到它是一个坏主意,现在我想要移除这个合并,就像它从未发生过一样。GitHub恢复或重置?

在这里描述,类似的情况:git revert not allowed due to a merge but no -m option was given

但是我不能肯定现在要做的,推翻或重置什么? 我想撤销我刚刚做的合并。

我也发现了这个How to revert Git repository to a previous commit?

混帐恢复--no提交0766c053..HEAD

git的承诺

这似乎是一个更好的主意......但我有无头绪

sourctree

+0

是的,我相信它的重复 – Honza

回答

1

只需在合并之前查找开发分支的最后一次提交,然后将您的git历史记录重置为该提交。

git reset --hard <pre_merge_last_commit_id> 

您可以使用图形化工具,如gitkgit log --oneline --decorate=full --graph找到最后提交的开发分支。

注意:确保你不恢复到最后一次提交的特性分支代替。

1

git revert当你想撤销已经发表的变化是非常有用的。它基本上还原了另一个提交所执行的更改(删除添加的行,添加删除的行,更改后的另一个方向的更改)。

它与“撤销”操作类似,但它通常发生后,其他提交已经添加到分支,并创造了新的承诺(或多个)。

现在我想删除此合并,就像从来没有发生过。

由于您没有发布您的更改,所以最好的解决方案是使用git reset --hard

如果您位于develop分支,并且最后一条命令是git merge feature/forum_kolo_3,则运行git reset --hard HEAD^1。它将当前分支(develop)移动到合并提交的第一个父代(即合并之前的位置)。