如何解决git合并冲突以支持拉取的更改?

我希望从工作树中删除所有冲突的更改,而不必使用gitmergetool处理所有冲突,同时保持所有无冲突的更改。最好是,我想在拉的时候做,而不是事后。


当前回答

我发现我需要指定origin-main作为要合并到的分支。

git merge **origin main** --strategy-option theirs

其他回答

git pull-X他们的答案可能会创建一个难看的合并提交,或者发出

错误:您对以下文件的本地更改将被合并覆盖:

如果您想简单地忽略对repo中文件的任何本地修改,例如,在始终应为源镜像的客户端上,请运行以下命令(用所需的分支替换master):

git fetch && git reset --hard origin/master

它是如何工作的?git fetch执行git pull,但不合并。然后gitreset-hard使您的工作树与上一次提交相匹配。您对回购中文件的所有本地更改都将被丢弃,但新的本地文件将被保留。

VS代码(集成Git)IDE用户:

如果要接受冲突文件中的所有传入更改,请执行以下步骤。

1. Go to command palette - Ctrl + Shift + P
2. Select the option - Merge Conflict: Accept All Incoming

类似地,您可以使用其他选项,如“全部接受”、“全部接受当前”等。,

请注意,有时这是行不通的:

git checkout--我们的路径/to/file

or

git checkout--他们的路径/to/file

我改为这样做,假设HEAD是我们的,MERGE_HEAD是他们的

git checkout HEAD -- path/to/file

or:

git checkout MERGE_HEAD -- path/to/file

在我们这样做之后,我们很好:

git add .

如果你想了解更多,请点击此处查看精彩的torek帖子:git checkout--我们不会从未合并文件列表中删除文件

我有一个长期运行的下一个版本分支,对开发时更改的文件、在两个分支的不同位置添加的文件等进行了大量删除。

我想将下一个版本分支的全部内容进行开发,所有内容都在一次巨大的合并提交中。

对我有效的上述命令组合是:

git merge -X theirs next-version
# lots of files left that were modified on develop but deleted on next-version
git checkout next-version .
# files removed, now add the deletions to the commit
git add .
# still have files that were added on develop; in my case they are all in web/
git rm -r web

这不是一个新的答案,只是结合了许多答案中的一部分,部分是为了保证你可能需要所有这些答案。

如果您已经处于冲突状态,并且不想逐个签出路径。你可以试试

git merge --abort
git pull -X theirs