首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git错误:“致命:第36行的损坏修补程序”

问Git错误:“致命:第36行的损坏修补程序”
EN

Stack Overflow用户
提问于 2013-08-09 08:32:36
回答 7查看 41.5K关注 0票数 32

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

代码语言:javascript
复制
    }
}

一段时间前,我错误地删除了换行符,但是直到今天,当我从Git-GUI中得到一条错误消息时,它还不错。

代码语言:javascript
复制
fatal: corrupt patch at line 36

我尝试添加缺失的换行符,但Git似乎无法正确处理它:

在添加换行符之前:

代码语言:javascript
复制
     }
 }
\ No newline at end of file

在添加换行符后:

代码语言:javascript
复制
     }
-}
\ No newline at end of file
+}

它仍然给了我这个错误。

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

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

EDIT2:此错误仅在最后一个块内的行执行时发生。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-08-09 10:04:54

好吧,很抱歉没有彻底检查一下。

我试着像我通常做的那样添加和执行,但是没有Git-GUI,使用命令行,它起了作用。

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

票数 0
EN

Stack Overflow用户

发布于 2015-08-01 11:52:55

当你编辑“-”行时,就会发生这种情况。

当您删除'-‘并忘记添加’(空格)而不是‘时,

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

更新

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

代码语言:javascript
复制
-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

您的编辑器将删除尾随空间,修补程序将如下所示:

代码语言:javascript
复制
-Line with space at end<--- Here no space. Patch will FAIL!!!
+Line with no space at end<--- Here no space also

此修补程序将失败,因为原始文件没有行:

代码语言:javascript
复制
-Line with space at end<---

相反,它有:

代码语言:javascript
复制
-Line with space at end <--- 

UPD

有时,您希望删除-行。您可以使用被裁剪的空白来更改它。因此,这是不起作用的(这里只是作为第一个字符的wihitespace ):

代码语言:javascript
复制

要解决这个问题,只需在其后面添加+行:

代码语言:javascript
复制
-
+

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

票数 34
EN

Stack Overflow用户

发布于 2019-03-05 20:04:10

另一个潜在的问题,尤其是在使用常规文本编辑器进行编辑时,是无法处理块开头的数字,即旧代码中有多少行,新代码中有多少行,以及每段代码从哪里开始。如果数字不匹配,则会得到fatal: corrupt patch at line x错误。

例如,@@ -32,9 +54,15 @@告诉它在第32行和原始文件中接下来的9行中找到要替换的代码,但是在编辑的文件中,从第54行开始有15行代码。如果您添加或删除任何行,您也必须编辑这些数字。

虽然我还没有对它做过任何真正的研究,也没有使用过git gui,但是可以想象,由于没有以新行结尾的行在技术上不符合某些标准,所以您需要将其中的一个或两个数字按一个修改才能正确地应用。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18142870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档