编辑 git 补丁给出“您编辑的块不适用”

Posted

技术标签:

【中文标题】编辑 git 补丁给出“您编辑的块不适用”【英文标题】:editing git patch gives "Your edited hunk does not apply" 【发布时间】:2012-03-19 00:41:37 【问题描述】:

我正在以交互方式添加文件:

git add ../../template/panels/panel-reports.php -p
diff --git a/template/panels/panel-reports.php b/template/panels/panel-reports.php
index 5482228..48d2901 100644
--- a/template/panels/panel-reports.php
+++ b/template/panels/panel-reports.php
@@ -214,6 +214,8 @@

                        <a class="addCategory"></a>
                        <a class="removeCategory"></a>
+                       <a class="addDocument"></a>
+                       <a class="checkTool"></a>

                        <div class="categoriesList"></div>
                        <div class="documentsList"></div>
Stage this hunk [y,n,q,a,d,/,e,?]? e

ps:这些是这里唯一修改的行

我要删除

+                       <a class="checkTool"></a>

所以我这样编辑:

# Manual hunk edit mode -- see bottom for a quick guide
@@ -214,6 +214,7 @@

                                                <a class="addCategory"></a>
                                                <a class="removeCategory"></a>
+                                               <a class="addDocument"></a>

                                                <div class="categoriesList"></div>
                                                <div class="documentsList"></div>
# ---
# To remove '-' lines, make them ' ' lines (context).
# To remove '+' lines, delete them.
# Lines starting with # will be removed.

而 git 拒绝了它:

error: patch failed: template/panels/panel-reports.php:214
error: template/panels/panel-reports.php: patch does not apply
Your edited hunk does not apply. Edit again (saying "no" discards!) [y/n]? 

在我看来,我写的内容没有任何错误或歧义,那么我错在哪里?

【问题讨论】:

确保每个上下文行都以前导空格字符 ' ' 开头,即使该行是空的。 浏览this question。 【参考方案1】:

ydroneaud 的评论是我正在寻找的答案。

许多文本编辑器在保存时会删除尾随空格,请注意这一点。

第二件事,当删除“-”以保留一行时,实际上将其替换为空格“”,不要只是删除它。

最后,不要摆弄顶部@@@@中的数字。

【讨论】:

如果行数发生变化,您必须调整顶部@@ @@中的行号。 @NiklasR 从 Git 版本 2.11.0 开始,您不需要调整顶部 @@ @@ 中的行号,因为对未修改的行进行更改 必须 可以在实际代码中而不是在交互模式下手动编辑。 git交互模式会自行处理修改后的行调整。 我的关键字是replace。我刚刚删除了“-”字符(不是整行),然后补丁也没有应用。删除“-”并添加空格就可以了。 和johan persson一模一样,也不需要编辑header hunk numbers

以上是关于编辑 git 补丁给出“您编辑的块不适用”的主要内容,如果未能解决你的问题,请参考以下文章

从 git add -p 编辑大块时修复“补丁不适用”

Git 补丁 - 补丁不适用

sh 找到可以应用哪个Git提交补丁。补丁文件作为此脚本的参数给出。脚本在找到提交时停止

如何干净地编辑差异/补丁文件?有补丁文件编辑器吗?

是否有任何用于“git add -p”的 GUI 工具?

福昕高级pdf编辑器破解补丁哪里可以下载呀,急需一份,小弟感激不尽