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

unmerged:   some_file.txt

You are in the middle of a conflicted merge.

如何放弃对文件所做的更改,只保留已提取的更改?


当前回答

自从Git 1.6.1.3以来,Git checkout已经可以从合并的任何一侧进行签出:

git checkout --theirs _widget.html.erb

其他回答

您可以中止合并步骤:

git merge --abort

否则您可以保留更改(在哪个分支上)

git checkout --ours file1 file2 ...

否则您可以保留其他分支更改

git checkout --theirs file1 file2 ...

可能不是OP想要的,但对我来说,我试图将一个稳定分支合并到一个功能分支,但冲突太多了。由于HEAD被多次提交更改,所以我没有成功重置更改,所以简单的解决方案是强制签出到一个稳定的分支。然后您可以签出到另一个分支,它将与合并前一样。

git checkout-f master

git结帐侧分支

另一种保留工作副本状态的方法是:

git stash
git merge --abort
git stash pop

我通常建议不要这样做,因为它实际上就像Subversion中的合并,因为它会在接下来的提交中丢弃分支关系。

我发现以下方法对我有效(将单个文件恢复到合并前状态):

git reset *currentBranchIntoWhichYouMerged* -- *fileToBeReset*

如果最终出现合并冲突,并且没有任何要提交的内容,但仍显示合并错误。在应用所有下面提到的命令之后,

git reset --hard HEAD
git pull --strategy=theirs remote_branch
git fetch origin
git reset --hard origin

请删除

.git\index.lock

文件[恢复时剪切粘贴到其他位置],然后根据需要的版本输入以下任意命令。

git reset --hard HEAD
git reset --hard origin

希望这有帮助!!!