我正在尝试使用git add -p
来对索引进行特定的更改。
这是Git建议的大块头:
@@ -7,8 +7,15 @@
<title>{{ page.title }}</title>
<link rel="stylesheet" href="/css/style.css">
</head>
- <body>
- <div class="content container">
+
+ <body class="container">
+ <ul class="navigation">
+ {% if page.url != '/index.html' %}
+ <li><a href="/">Home</a></li>
+ {% endif %}
+ </ul>
+
+ <div class="content">
{{ content }}
</div>
</body>
这是我尝试编辑该补丁:
@@ -7,5 +7,5 @@
<title>{{ page.title }}</title>
<link rel="stylesheet" href="/css/style.css">
</head>
- <body>
- <div class="content container">
+
+ <body class="container">
Git拒绝这个补丁,说:
您编辑的大块不适用。再次编辑(说“不”丢弃!)[是/否]?
我不明白:
-
和+
都从第7行开始-
和+
都会继续5行当我查看原始文件(下面),并在心理上尝试应用我建议的补丁时,它似乎有意义。怎么了?
供参考,这是整个原始文件:
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="utf-8">
5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
6 <meta name="viewport" content="width=device-width, initial-scale=1.0">
7 <title>{{ page.title }}</title>
8 <link rel="stylesheet" href="/css/style.css">
9 </head>
10 <body>
11 <div class="content container">
12 {{ content }}
13 </div>
14 </body>
15 </html>
此外,这是我写的一个补丁,Git没有抱怨:
@@ -7,8 +7,9 @@
<title>{{ page.title }}</title>
<link rel="stylesheet" href="/css/style.css">
</head>
- <body>
- <div class="content container">
+
+ <body class="container">
+ <div class="content">
{{ content }}
</div>
</body>
在某些方面它实际上是一个更好的补丁,但我想理解为什么Git不喜欢我的第一种方法。
答案 0 :(得分:1)
补丁中确实需要上下文,至少在默认情况下是这样。通过删除底部上下文,补丁说明更改是文件的最后一行。
通过查看-C(上下文)选项中的git help apply
手册,它说“默认情况下不会忽略任何上下文。”。您可以忽略git apply -C0 my.patch
的上下文,但当然这对您正在进行的交互式编辑没有帮助,因为它似乎使用默认值。
进一步阅读git help add
我注意到一个名为“编辑补丁”的部分,其中包含以下段落,最后说明了所有内容:
There are also several operations which should be avoided entirely,
as they will make the patch impossible to apply:
· adding context (" ") or removal ("-") lines
· deleting context or removal lines
· modifying the contents of context or removal lines