补丁申请期间发生冲突的原因

时间:2015-04-08 09:57:26

标签: git

我试图理解为什么补丁应用冲突的最常见原因。我可以假设它是一个不匹配的变化背景,我是对的吗?例如,我有以下补丁:

diff --git a/Gruntfile.js b/Gruntfile.js
index d220f35..176c71a 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -10,7 +10,7 @@ module.exports = function (grunt) {
                         src: ['index.less', '!**/components/**'],
                         dest: 'build/development/css',
                         ext: '.css',
-                        cleancss: true
+                        cleancss: false
                     }
                 ]
             },

上面有3行上下文,下面有3行上下文。如果,当git将补丁应用于第一个上下文行而不是这样:

src: ['index.less', '!**/components/**'],

是这样的:

this_is_changed_context_line: ['index.less', '!**/components/**'],

发生冲突。

1 个答案:

答案 0 :(得分:1)

请参阅patch命令的文档。通常,它使用行号来定位要修补的目标文件的正确部分。如果目标文件与给定的上下文不匹配,patch会假定行号错误并开始在文件的其他位置搜索给定的上下文。如果 失败,它会使用给定的"模糊因子"开始从上下文的开头和结尾删除行,以查看是否可以使用缩减的上下文来查找匹配项。最终,它找到了可以应用给定更改的地方,或者它放弃了。