协慌网

登录 贡献 社区

如何撤消有冲突的 git merge

我在分支mybranch1mybranch2是从mybranch1派生的,并在mybranch2中进行了mybranch2

然后,在mybranch1 ,我完成了git merge --no-commit mybranch2这表明合并时存在冲突。

现在,我想放弃所有内容( merge命令),以便mybranch1恢复到之前的状态。我不知道该怎么办。

答案

最新的 Git:

git merge --abort

这将尝试将您的工作副本重置为合并之前的任何状态。这意味着它应该还原合并之前的所有未提交的更改,尽管它不能始终可靠地进行还原。通常,您无论如何都不应与未提交的更改合并。

在 1.7.4 版之前:

git reset --merge

这是较旧的语法,但与上述语法相同。

在 1.6.2 之前的版本:

git reset --hard

删除所有未提交的更改,包括未提交的合并。有时,即使在支持上述命令的较新版本的 Git 中,此行为也很有用。

实际上,值得注意的是, MERGE_HEAD存在git reset --mergegit merge --abort仅等效于git reset --merge 。可以在 git help for merge 命令中阅读。

git merge --abort # is equivalent to git reset --merge when MERGE_HEAD is present.

合并失败后,当没有MERGE_HEAD ,可以使用git reset --merge撤消失败的合并,但不必使用git merge --abort因此它们不仅是同一事物的新旧语法

我个人觉得git reset --merge在日常工作中git reset --merge起来非常有用。

假设您使用的是最新版的 git,

git merge --abort