HEAD + commit相同的Git合并冲突



我刚刚运行了一个git pull origin master,许多合并冲突在HEAD和上游提交中是相同的:

<<<<<<< HEAD
gem 'fuzzy-string-match'
=======
gem 'fuzzy-string-match'
>>>>>>> 50147a3519be5bc883dabce86525ee4f36640b22

有几十个文件都有相同的情况,前后都是一样的。

有人知道是什么原因导致了这种行为吗?或者是否有一种方法可以自动合并这些"冲突"?

是因为你有两个头部部分,git不知道哪一个是正确的,这就是为什么他告诉你冲突在哪里。最好的方法是使用注释,这样他就知道合并时的区别了。

自动解决合并冲突当您更喜欢其他开发人员的工作而不是您的工作时,您可以提出适当的策略,通过优先考虑其他开发人员的工作来解决冲突。

git pull -s recursive -X theirs <remoterepo or other repo>

或者,简单地说,对于默认存储库:

git pull -X theirs

如果您已经在没有使用他们的策略的情况下进行了拉出,并且希望在一个冲突的文件中优先考虑其他开发人员的工作,那么运行下面的命令:

git checkout --theirs path/to/file

如果你已经处于冲突状态,并且想在所有冲突的文件中优先考虑其他开发人员的工作,那么运行git checkout和git add命令:

git checkout --theirs .
git add .

如果你更喜欢自己编写的代码,那么你应该使用——our,而不是——others,如下所示:

git checkout --ours .
git add .

但是,这是极端的,所以在运行它之前要确保。

你不能使用";并在结帐点处键入文件名。

你也可以在git merge中使用递归——他们的策略选项:

git merge --strategy-option theirs