修补程序应用系统的补丁但被git-apply拒绝

时间:2014-11-27 12:01:58

标签: git patch

我试图了解git如何应用统一差异。

我写了以下#34;身份"补丁:

--- a/js/controllers.js
+++ b/js/controllers.js
@@ -15,3 +15,3 @@
-  '$location',
-  function ($scope, $routeParams, $location) {
-    doSomething();
+  '$location',
+  function ($scope, $routeParams, $location) {
+    doSomething();

系统补丁命令成功应用此补丁,而git-apply提供以下输出:

error: patch failed: [...]js/controllers.js:15
error: [...]js/controllers.js: patch does not apply

我不明白为什么。

1 个答案:

答案 0 :(得分:0)

您的补丁没有上下文。 diff也会在更改之前和之后包含一些未修改的行。来自git apply文档:

  

--unidiff-zero

     

默认情况下,git apply要求应用的补丁是一个统一的差异,至少有一行上下文。这提供了良好的安全措施,但在应用使用--unified=0生成的差异时会出现故障。要绕过这些检查,请使用--unidiff-zero

     

请注意,由于上述原因,不鼓励使用无上下文补丁。