如何避免“错误:在Git中手动编辑块时,是否会出现以下块的”第X行没有标题的补丁片段“?

l5tcr1uw  于 2022-12-10  发布在  Git
关注(0)|答案(1)|浏览(182)

我正在运行Git版本2.18.0.windows.1,并试图手动编辑块(这是我第一次搞砸这个)。我从拆分一个更大的块开始,这是两个块中的第一个。我去编辑第一个块,如下所示:
"老家伙"

@@ -1,8 +1,8 @@
 Shopping List

-apples
-bananas
-yogurt
-milk
+red apples
+6 bananas
+vanilla yogurt
+2% milk
 wheat bread
 cereal

尝试的编辑:

@@ -1,8 +1,8 @@
 Shopping List

 apples
-bananas
+6 bananas
 yogurt
-milk
+2% milk
 wheat bread
 cereal

...但是当我保存并关闭我的文本编辑器(Atom)时,Git给我以下错误信息:

error: patch fragment without header at line 16: @@ -7,6 +7,6 @@

错误信息中的行号对应于我的 second hunk的行号,所以我猜测,既然我在编辑第一个hunk时更改了行号,那么它一定是把第二个hunk的行号搞砸了。奇怪的是,我正在学习一门课程,而老师似乎没有遇到问题。这是Git版本中的一个潜在错误吗?我在跑还是我错过了什么?
注意:我确保每行前面有适当的空格/+/-,并试图在编辑第一个块时修改行号,但没有效果。

wwtsj6pe

wwtsj6pe1#

出现此错误的典型原因是上下文行前缺少一个空格 (请注意,这些行以-+或空格开头),或者缺少描述正在修改的文件的文件名行。
从你的“重现步骤”来看,很明显你缺少了文件名,这将导致标题中提到的错误。通过简单地添加两行文件名:

--- a/list
+++ b/list

我使您编辑的版本工作,请参阅:

λ cat 1
--- a/list
+++ b/list
@@ -1,8 +1,8 @@
 Shopping List

 apples
-bananas
+6 bananas
 yogurt
-milk
+2% milk
 wheat bread
 cereal
 λ git apply ./1
 λ git --no-pager diff
diff --git a/list b/list
index 9d00b85..d4c66c5 100644
--- a/list
+++ b/list
@@ -1,8 +1,8 @@
 Shopping List

 apples
-bananas
+6 bananas
 yogurt
-milk
+2% milk
 wheat bread
 cereal

附言:我注意到你在问题主体中显示的错误涉及到第16行,而这行根本不存在。这意味着它属于另一个不同的diff。无论如何,就你发布的这个问题而言,这是解决方案。

相关问题