Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git错误:";致命:第36行的修补程序损坏”;_Git_Git Gui - Fatal编程技术网

Git错误:";致命:第36行的修补程序损坏”;

Git错误:";致命:第36行的修补程序损坏”;,git,git-gui,Git,Git Gui,我有一个Java文件,其结尾如下: } } -Line with space at end<--- Here no space. Patch will FAIL!!! +Line with no space at end<--- Here no space also 不久前,我在结尾错误地删除了换行符,但直到今天,当我提交时从Git GUI收到一条错误消息时,它才恢复正常 fatal: corrupt patch at line 36 我尝试添加丢失的换行符,但Git似

我有一个Java文件,其结尾如下:

    }
}
-Line with space at end<--- Here no space. Patch will FAIL!!!
+Line with no space at end<--- Here no space also
不久前,我在结尾错误地删除了换行符,但直到今天,当我提交时从Git GUI收到一条错误消息时,它才恢复正常

fatal: corrupt patch at line 36
我尝试添加丢失的换行符,但Git似乎无法正确处理它:

添加换行符之前:

     }
 }
\ No newline at end of file
     }
-}
\ No newline at end of file
+}
添加换行符后:

     }
 }
\ No newline at end of file
     }
-}
\ No newline at end of file
+}
它仍然给我这个错误

我尝试恢复更改并只添加换行符,而不对文件进行其他更改,但也没有任何帮助

编辑:添加两行甚至三行换行符也没有帮助


EDIT2:只有在提交最后一个块中的行时才会发生此错误。

提交
对修补程序没有任何作用。它甚至对它们的内容没有任何作用。提交仅格式化树和提交对象,并调整其指向的头和引用。所以不是提交本身导致了这个错误

它也不是
add
,因为当它散列新文件内容时,它对新内容进行操作,并且根本不关心差异


唯一关心差异的是默认的pre-commit钩子,它检查您是否添加了尾随空格和一些类似的问题。您可以通过调用
git commit--no-verify
跳过该检查。但是您必须首先启用它,并且您可能知道它。

好的,很抱歉没有彻底检查它

我试着像平常一样添加和提交,但是没有GitGUI,使用命令行,它就成功了


因此,我建议所有在Git GUI上有问题的人不要像我一样,在发布之前通过命令行检查它。

这是在编辑“-”行时发生的。
当您删除“-”并忘记添加“”(空格)而不是它时

打开修补程序并检查所有要保持不变的行是否以“”开头(空格)

更新

您的编辑器也可能有选项:“删除行尾的空格”。因此,在编辑器中保存修补程序时:

-Line with space at end <--- NOTICE: Here there is one space at the end
+Line with no space at end<--- Here there's no space
要解决此问题,只需在其后面添加
+
行:

-
+

此修补程序将删除空行并再次添加它

我刚刚遇到了一个类似的问题(可能由于git gui的工作原理而相同),这可能对任何拥有它的人都有用

当通过git add-e pom.xml对my pom.xml进行修补时,修补程序如下所示

diff--git a/pom.xml b/pom.xml
索引3dba69a..a9c8ebb 100644
---a/pom.xml
+++b/pom.xml
@@ -1,26 +1,48 @@
4.0.0
愤怒
项目名称
0.0.1
+    
+UTF-8
+    
src/main/java
src/test/java
maven编译器插件
3.6.1
1.8
1.8
+org.jacoco
+jacocomaven插件
+                0.7.9
+                
+                    
+                        
+配制剂
+                        
+                    
+                    
+报告
+试验
+                        
+报告
+                        
+                    
+                
+            
+            
maven surefire插件
2.16
**/Test*.java
**/*Test.java
**/*Tests.java
@@ -32,9 +54,15 @@
朱尼特
朱尼特
4.12
+        
+org.mockito
+莫基托磁芯
+            2.5.5
+试验
+        
我想用Mockito依赖项删除最后一个块。如果我只是删除行本身,它总是向第64行报告错误:

fatal: corrupt patch at line 64
fatal: Could not apply '.git/ADD_EDIT.patch'
fatal: corrupt patch at line 64
fatal: Could not apply '.git/ADD_EDIT.patch'
第64行是修补程序文件中的最后一行,因此在
之后的行

解决方案是简单地移除整个主干,这样从@@-行向下的所有内容都可以立即工作


我希望这能有所帮助。

我也遇到了同样的问题,最后终于弄明白了问题所在。我的一些行是用制表符而不是空格缩进的。在将所有缩进改为空格后,它成功了

我想删除带有Mockito依赖项的最后一个块。
如果我只是删除行本身,它总是向第64行报告错误:

fatal: corrupt patch at line 64
fatal: Could not apply '.git/ADD_EDIT.patch'
fatal: corrupt patch at line 64
fatal: Could not apply '.git/ADD_EDIT.patch'
您现在(2019年第1季度)不应该在Git 2.21+中看到这种错误,因为在2.21之前,“
Git add-e
”在它想要让用户编辑的更改小于临时文件中遗留的上一个更改时被弄糊涂了

add--edit
:截断修补程序文件 如果已经有一个
.git/ADD_EDIT.patch
文件,我们无法正确截断它,这可能会导致非常有趣的错误

当然,此文件不应随意放置。
但至少在一个案例中,有一个过时的副本,比当前的差异大 结果是一个腐败的差别

让我们在编写文件时截断它,不要太担心它


另一个潜在的问题,尤其是在使用常规文本编辑器进行编辑时,是无法处理大块开头的数字,这表示旧代码中有多少行,新代码中有多少行,以及每行代码的起始位置。如果数字不匹配,则会在第x行出现
致命:损坏的修补程序
错误

例如,
@-32,9+54,15@
告诉它在原始文件的第32行和接下来的9行中查找要替换的代码,但在编辑的文件中有15行从lin开始