我不小心在本地主分支上运行了gitmergesome_other_branch。我还没有将更改推送给origin master。如何撤消合并?


合并后,git状态显示:

# On branch master
# Your branch is ahead of 'origin/master' by 5 commits.

我如何撤销所有这些提交?


当前回答

如果您想要一个命令行解决方案,我建议您只使用MBO的答案。

如果您是新手,您可能会喜欢图形化方法:

启动gitk(从命令行,或在文件浏览器中单击鼠标右键(如果有))您可以很容易地在那里发现合并提交-从顶部开始的第一个节点有两个父节点按照第一个/左侧父级的链接(合并前当前分支上的父级,通常为红色)在所选提交上,右键单击“将分支重置到此处”,选择此处的硬重置

其他回答

如果分支被合并而未被推送,则下面给出的git reset命令将用于撤消合并:

git reset --merge ORIG_HEAD

例子:

git reset --merge origin/master

您可以使用git reset命令。

git reset-将当前HEAD重置为指定状态。git重置[--混合|--soft|--hard|--merge][-q][]git-reset[-q][][-]…git重置--补丁[] [--] […]

GIT重置

首先,确保你已经完成了一切。然后将存储库重置为以前的工作状态:$git重置f836e4c1fa51524658b9f026eb5efa24af3a36或使用--hard(这将删除所有本地的、未提交的更改!):$git重置f836e4c1fa51524658b9f026eb5efa24af3a36--硬使用错误合并提交之前的哈希。通过以下方式检查要在先前正确版本的顶部重新提交的提交:$git日志4c3e23f529b581c3cbe95350e84e66e3cb05704f提交4c3e23f529b581c3cbe95350e84e66e3cb05704f...提交16b373a96b0a353f7454b141f7aa6f548c979d0a...通过以下方式在存储库的正确版本顶部应用正确的提交:通过使用cherry-pick(一些现有提交引入的更改)git樱桃pick ec59ab844cf504e462f011c8cc7e5667bb2e9c7或者通过以下方式选择提交范围:在合并之前首先检查正确的更改:数字差异5216b24822ea1c48069f648449997879bb49c070..4c3e23f529b581c3cbe95350e84e66e3cb05704f在合并之前首先检查正确的更改:git cherry pick 5216b24822ea1c48069f648449997879bb49c070..4c3e23f529b581c3cbe95350e84e66e3cb05704f其中这是您提交的正确提交的范围(不包括错误提交的合并)。

暂存gitbranch-d the_local_branchgit checkout-t<远程名称>应用git存储

这对我有用。。!!

在这种情况下,您需要使用git-reset--hard<branch_name>重置分支。如果要在重新设置之前保存更改,请确保创建一个新的分支并git checkout<branch_name>。

您也可以使用git-reset--hard<commit_id>将状态重置为特定的提交。

如果已推送更改,则可以改用git-restore<branch_name>。请务必了解如何在其他场景中使用git还原和git签出。