协慌网

登录 贡献 社区

我遇到了合并冲突。我怎样才能中止合并?

我使用git pull并发生了合并冲突:

unmerged:   _widget.html.erb

You are in the middle of a conflicted merge.

我知道该文件的其他版本是好的,我的是坏的所以我的所有更改都应该放弃。我怎样才能做到这一点?

答案

由于您的pull不成功,因此HEAD (而不是HEAD^ )是您分支上的最后一个 “有效” 提交:

git reset --hard HEAD

你想要的另一件事就是让他们的改变超越你的改变。

较旧版本的 git 允许您使用 “他们的” 合并策略:

git pull --strategy=theirs remote_branch

但是这已被删除,正如Junio Hamano (Git 维护者)在此消息中所解释的那样。如链接所述 ,您可以这样做:

git fetch origin
git reset --hard origin

如果你的 git 版本是 > = 1.6.1,你可以使用git reset --merge

另外,正如 @Michael Johnson 所提到的,如果您的 git 版本 > = 1.7.4,您还可以使用git merge --abort

与往常一样,确保在开始合并之前没有未提交的更改。

来自git merge 手册页

MERGE_HEAD存在时, git merge --abort相当于git reset --merge

合并正在进行时, MERGE_HEAD存在。

此外,关于开始合并时未提交的更改:

如果你有更改,你不想在开始合并之前提交,只需在合并之前将它们git stash起来,然后在完成合并或中止之后将其git stash pop

git merge --abort

中止当前的冲突解决过程,并尝试重建合并前状态。

如果合并开始时存在未提交的工作树更改,则git merge --abort在某些情况下将无法重建这些更改。因此,建议在运行 git merge 之前始终提交或存储更改。

MERGE_HEAD存在时, git merge --abort相当于git reset --merge

http://www.git-scm.com/docs/git-merge