GitHub还原还是重置?

时间:2017-06-28 10:09:47

标签: git github merge reset revert

正如你在图片中看到的那样,我正在使用功能forum_kolo_3,我决定完成该功能并将其合并到开发中(但没有将更改推送到远程开发,因此它只是本地更改)而且我实现了这是一个坏主意,现在我想删除这个合并,就像从未发生过一样。

如此类似的情况:git revert not allowed due to a merge but no -m option was given

但是我不太清楚现在该做什么,反向还是重置? 我想撤消我刚才做的合并。

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

  

git revert --no-commit 0766c053..HEAD

     

git commit

这似乎是一个更好的主意......但我没有任何线索

sourctree

2 个答案:

答案 0 :(得分:2)

当您要撤消的更改已发布时,

git revert非常有用。它基本上还原了另一个提交操作的更改(删除添加的行,添加删除的行,更改行的另一个方向的更改)。

它与“撤消”操作类似,但通常在其他提交已添加到分支后发生,并且它会创建新的提交。

  

现在我想删除这个合并,就像从未发生过一样。

由于您未发布更改,因此最佳解决方案是使用git reset --hard

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

答案 1 :(得分:1)

在合并之前找到develop分支的最后一次提交,然后将你的git历史记录重置为该提交。

git reset --hard <pre_merge_last_commit_id>

您可以使用gitkgit log --oneline --decorate=full --graph等图形工具查找开发分支的最后一次提交。

注意:请确保不要重置为功能分支的最后一次提交。