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

12k*_*run 6 git git-patch atom-editor

我正在运行 Git 版本 2.18.0.windows.1 并尝试手动编辑 hunk(这是我第一次搞乱这个)。我首先分裂了一个更大的块,这是两个块中的第一个。我去编辑第一个大块如下......

老帅哥:

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

-apples
-bananas
-yogurt
-milk
+red apples
+6 bananas
+vanilla yogurt
+2% milk
 wheat bread
 cereal
Run Code Online (Sandbox Code Playgroud)

尝试的编辑:

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

 apples
-bananas
+6 bananas
 yogurt
-milk
+2% milk
 wheat bread
 cereal
Run Code Online (Sandbox Code Playgroud)

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

error: patch fragment without header at line 16: @@ -7,6 +7,6 @@
Run Code Online (Sandbox Code Playgroud)

错误消息中的行号对应于我的第二个块的行号,所以我猜测,由于我在编辑第一个块时更改了行号,所以它一定与第二个块的行号搞混了。奇怪的是,我正在学习一门课程,而讲师似乎没有任何问题。这是我正在运行的 Git 版本中的潜在错误还是我遗漏了某些内容?

注意:我确保每行前面有适当的空格/+/-,并尝试在编辑第一个块时修改行号,但无济于事。

Hi-*_*gel 0

错误的典型原因是上下文行之前缺少一个空格(请注意,行以-+或空格开头),或者缺少描述正在修改的文件的文件名行。

\n

从您的“重现步骤”来看,很明显您缺少文件名,这将导致标题中提到的错误。只需添加 2 行文件名即可:

\n
--- a/list\n+++ b/list\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
 \xce\xbb cat 1\n--- a/list\n+++ b/list\n@@ -1,8 +1,8 @@\n Shopping List\n\n apples\n-bananas\n+6 bananas\n yogurt\n-milk\n+2% milk\n wheat bread\n cereal\n \xce\xbb git apply ./1\n \xce\xbb git --no-pager diff\ndiff --git a/list b/list\nindex 9d00b85..d4c66c5 100644\n--- a/list\n+++ b/list\n@@ -1,8 +1,8 @@\n Shopping List\n\n apples\n-bananas\n+6 bananas\n yogurt\n-milk\n+2% milk\n wheat bread\n cereal\n
Run Code Online (Sandbox Code Playgroud)\n

PS:我确实注意到您在问题正文中显示的错误是指第 16 行,该错误甚至不存在。这意味着它属于不同的差异。无论如何,就您发布的内容而言,这就是解决方案。

\n