当我尝试使用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
以下是错误消息:
fatal: corrupt patch at line 14
奇怪的是以下罚款甚至没有14行!?注意用新行结束文件并没有解决问题
答案 0 :(得分:44)
显然是Git GUI requires that files end with a newline when staging individual lines。
我很确定至少在一个时间点,即使在文件末尾没有换行符,也可以暂存各行,但显然已经不再可能了。我自己遇到了这个问题,在文件末尾有换行符修复它,然后删除它会导致它。
答案 1 :(得分:13)
实际上,当您编辑' - '行时,通常会发生这种情况 当您删除' - '并忘记添加''(空格)而不是
时或者,错误地,您添加了两个空格,并使用“标签”作为标识
打开你的补丁并检查你想要保持不变的所有行是以''(一个空格)开头的
我看到有些人使用--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
你的编辑器删除尾随空格和补丁变成这样:
-Line with space at end<--- Here no space. Patch will FAIL!!!
+Line with no space at end<--- Here no space also
此补丁将失败,因为源文件没有行:
-Line with space at end<---
它有:
-Line with space at end <---
<强> UPD2 强>
所以,如果在下一行的补丁中
android:tileMode="repeat"
你的编辑删除了训练空间。补丁将失败
答案 2 :(得分:2)
当您使用的块太大(即修改了太多连续行)时,Git GUI无法在索引中添加/删除行。
我的解决方法:如果更改不是“粉红色的墙”(如果在块的中间有一些未修改的行),请转到编辑&gt;选项并减少差异上下文中的行数。如果这不起作用,你就搞砸了;使用其他工具(例如命令行)。
答案 3 :(得分:1)
我在分享帅哥时遇到了这个错误。
这里提到的“空白”提醒我,在我的git diff选项中,我有“-w”,它在跳跃时会跳过白色空间。
我删除了那个标志(使用git-gui的“选项......”),并且能够在没有错误的情况下安排好。然后我将其添加回来(因为我通常不希望在检查已更改的内容时看到空格差异。)
不确定这会对您有所帮助,但尝试轻松撤消相当无害。
答案 4 :(得分:0)
受到kyl191答案的启发,我想出了一个解决这个问题的简单方法:
在文件末尾添加换行符
存储所有更改
git stash
再次在文件末尾添加换行符,因此您在当前文件和隐藏版本中都有换行符
暂存相应的hunk(仅包含换行符)
git stage <your file>
从藏匿处弹出您的更改
git stash pop
现在你应该可以通过gui演出单行而不会出现这个错误。这是有效的,因为在你只播放包含部分的换行符后,从stash恢复的版本的差异已经看到一个以换行符结尾的文件。
答案 5 :(得分:0)
我遇到了这个问题,因为我试图在emacs中为我的补丁添加一个换行符,当我保存它时它会再次自动删除换行符。
如果您使用emacs在修补程序的末尾添加换行符,则可能还会将其删除。我打开另一个文本编辑器来添加我的换行符并且它有效。
答案 6 :(得分:-1)
阶段整个文件。 取消选择行