我试图理解为什么补丁应用冲突的最常见原因。我可以假设它是一个不匹配的变化背景,我是对的吗?例如,我有以下补丁:
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/**'],
发生冲突。
答案 0 :(得分:1)
请参阅patch
命令的文档。通常,它使用行号来定位要修补的目标文件的正确部分。如果目标文件与给定的上下文不匹配,patch
会假定行号错误并开始在文件的其他位置搜索给定的上下文。如果 失败,它会使用给定的"模糊因子"开始从上下文的开头和结尾删除行,以查看是否可以使用缩减的上下文来查找匹配项。最终,它找到了可以应用给定更改的地方,或者它放弃了。