【发布时间】:2013-09-02 03:23:14
【问题描述】:
我正在尝试使用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 拒绝这个补丁,说:
您编辑的大块不适用。再次编辑(说“不”丢弃!)[y/n]?
我不明白:
-
-和+都从第 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 不喜欢我的第一种方法。
【问题讨论】:
-
您是否在编辑的补丁中包含了补丁的最后三行(用于上下文)?我不知道这是否重要,但拥有它并没有错。
-
是的,我的第二次补丁尝试(有效的那个)最后确实有上下文。第一个——有问题的——最后没有上下文。 我逐字发布了所有内容。 有一段时间我认为上下文是强制性的,但我只是遇到了一个 Git 生成的不带结束上下文的补丁。再说一次,那个补丁是针对文件的。所以,我也不知道是否需要上下文。
-
在上下文中尝试并报告。
-
这几乎是我的第二种方法,它有效。不幸的是,我已经使用过这种方法并且正在应用其他一些补丁,所以我宁愿不回去:D
-
你没有比较最小的差异,所以我们不能真正凭经验回答这个问题。希望知道补丁规则的人会根据这些规则回答。
标签: git