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

unmerged:   some_file.txt

You are in the middle of a conflicted merge.

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


当前回答

我想你需要重置一下。

请注意,git revert意味着与svn revert非常不同的东西-在Subversion中,该revert将丢弃您(未提交)的更改,将文件从存储库返回到当前版本,而git rever“撤消”提交。

gitreset应该执行与svnreset等效的操作,即丢弃不需要的更改。

其他回答

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

git stash
git merge --abort
git stash pop

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

评论建议git reset-merge是git merge-ort的别名。值得注意的是,如果存在merge_HEAD,gitmerge--abort仅等同于gitreset-merge。这可以在git help for merge命令中读取。

当存在merge_HEAD时,gitmerge--abort等同于gitreset-merge。

合并失败后,如果没有merge_HEAD,则可以使用git-reset-mmerge撤消失败的合并,但不必使用gitmerge-art。它们不仅是同一事物的新旧语法。

就个人而言,我发现git reset-merge对于与所描述的场景类似的场景更为强大,并且通常合并失败。

我想你需要重置一下。

请注意,git revert意味着与svn revert非常不同的东西-在Subversion中,该revert将丢弃您(未提交)的更改,将文件从存储库返回到当前版本,而git rever“撤消”提交。

gitreset应该执行与svnreset等效的操作,即丢弃不需要的更改。

您可以中止合并步骤:

git merge --abort

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

git checkout --ours file1 file2 ...

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

git checkout --theirs file1 file2 ...

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

git checkout-f master

git结帐侧分支