"致命:在第XX行损坏补丁"时,升级单行

Kir*_*kov 40 git git-gui

当我尝试使用git gui(右键单击 - >用于提交的阶段行)来演示单行或多行时,我收到以下错误.这不是第一次发生在我身上,我发现其他人正面对它.但是我找不到如何解决它.

有没有人遇到过这个问题?有什么我可以做的(暂存所有文件不是一个真正的解决方案)

更新: 这是一个文件,当我尝试暂存已删除的行时,它给出了以下错误.

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@drawable/texture"
    android:tileMode="repeat"
-   android:dither="true"
    >
</bitmap>
\ No newline at end of file
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

fatal: corrupt patch at line 14
Run Code Online (Sandbox Code Playgroud)

奇怪的是以下罚款甚至没有14行!?注意用新行结束文件并没有解决问题

Kyl*_*yle 44

显然,Git GUI 要求在分段各行时文件以换行符结尾.

我很确定至少在一个时间点,即使在文件末尾没有换行符,也可以暂存各行,但显然已经不再可能.我自己遇到了这个问题,在文件末尾有换行修复它,然后删除它会导致它.

  • 对于评论说这不起作用的人:你将无法使用`git gui` _until修补此文件,你将新行添加到文件的末尾,然后提交it_.一旦使用换行符提交,您可以再次修补它. (5认同)
  • 刚刚遇到过这个问题.添加换行符对我来说也不起作用,但无论如何都有`git add -p - <file>`. (3认同)
  • 可以确认@DrewNoakes说的是什么.这也是我的行为方式.这篇文章是正确的答案.供参考:http://git.661346.n2.nabble.com/BUG-git-apply-sometimes-says-quot-corrupt-patch-quot-when-adding-single-lines-td5434443.html (3认同)

Eug*_*kov 14

实际上,当你编辑' - '行时经常会发生这种情况.
当你删除' - '并忘记添加''(空格)而不是它

或者,错误地,您添加两个空格,并使用"标签"作为标识

打开你的补丁并检查你想要保持不变的所有行都以''(一个空格)开头

我看到有些人--ignore-space-change --ignore-whitespace --whitespace=fix用作解决方法,但这是另一件你不能混淆的事情.

打开你的补丁并检查你想要保持不变的所有行都以''(空格)开头

UPD

你的编辑器也可以选择:"删除行尾的空格"所以,当你在编辑器中保存补丁时:

-Line with space at end <--- NOTICE: Here one space at the end
+Line with no space at end<--- Here no space
Run Code Online (Sandbox Code Playgroud)

你的编辑器删除尾随空格和补丁变成这样:

-Line with space at end<--- Here no space. Patch will FAIL!!!
+Line with no space at end<--- Here no space also
Run Code Online (Sandbox Code Playgroud)

此补丁将失败,因为源文件没有行:

-Line with space at end<---
Run Code Online (Sandbox Code Playgroud)

它有:

-Line with space at end <--- 
Run Code Online (Sandbox Code Playgroud)

UPD2

所以,如果你的补丁在下一行

android:tileMode="repeat"
Run Code Online (Sandbox Code Playgroud)

你的编辑删除了训练空间.补丁将失败