Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么当/usr/bin/patch成功时git-apply失败?_Git_Diff_Patch - Fatal编程技术网

为什么当/usr/bin/patch成功时git-apply失败?

为什么当/usr/bin/patch成功时git-apply失败?,git,diff,patch,Git,Diff,Patch,我经常遇到这种情况:我有一个用git-format-patch生成的补丁,我用git-apply应用它,结果失败,显示消息“patch not apply” 然后,我惊讶地尝试用patch-p1-I…应用它,它成功了,没有任何问题,只需要几个大的偏移量(但大到例如300行) 我想知道为什么会这样?我使用了--recont选项和apply,所以它也应该接受大块偏移量。我甚至使用了-3进行三方合并,这在50%的情况下都有帮助 我还想指出这个补丁是多么的简单(附件)–这里是它的摘要: lib/key

我经常遇到这种情况:我有一个用
git-format-patch
生成的补丁,我用
git-apply
应用它,结果失败,显示消息“patch not apply”

然后,我惊讶地尝试用
patch-p1-I…
应用它,它成功了,没有任何问题,只需要几个大的偏移量(但大到例如300行)

我想知道为什么会这样?我使用了
--recont
选项和
apply
,所以它也应该接受大块偏移量。我甚至使用了
-3
进行三方合并,这在50%的情况下都有帮助

我还想指出这个补丁是多么的简单(附件)–这里是它的摘要:

 lib/keybind.c          |  1 +
 lib/keybind.h          |  1 +
 misc/mc.default.keymap |  1 +
 misc/mc.emacs.keymap   |  1 +
 src/editor/edit-impl.h |  1 +
 src/editor/edit.c      | 21 +++++++++++++++++++++
 src/keybind-defaults.c |  1 +
我正在用它来对抗现任的首席执行官。补丁已经在那里合并了,但是首先我要应用反向补丁(毫不奇怪:使用
patch
),然后尝试从文件中应用它(附在下面)

那么为什么
git apply不能正确处理这个简单的补丁呢?git编程人员不能编写代码或至少复制一个像样的工具(即:
patch
)?还是我错过了什么

我还遇到了一个类似的重要问题:使用
格式补丁生成的补丁
即使使用
补丁
,也不适用,所以我做了
git diff master..BRANCH>adhoc.patch
它工作了!!我能够用
/usr/bin/patch
应用补丁,我甚至没有回头看
格式补丁
/
应用
组合

下面是git apply-3——重新计算补丁/CenterView\u v3的输出。补丁

error: patch failed: src/editor/edit-impl.h:233
Falling back to three-way merge...
Applied patch to 'src/editor/edit-impl.h' cleanly.
error: patch failed: src/editor/edit.c:3766
error: repository lacks the necessary blob to fall back on 3-way merge.
error: src/editor/edit.c: patch does not apply
这里来自
补丁-p1-i…

patching file lib/keybind.c
Reversed (or previously applied) patch detected!  Assume -R? [n] y
Hunk #1 succeeded at 69 (offset 5 lines).
patching file lib/keybind.h
Reversed (or previously applied) patch detected!  Assume -R? [n] y
Hunk #1 succeeded at 57 (offset 2 lines).
patching file misc/mc.default.keymap
Reversed (or previously applied) patch detected!  Assume -R? [n] y
Hunk #1 succeeded at 278 (offset 3 lines).
patching file misc/mc.emacs.keymap
Reversed (or previously applied) patch detected!  Assume -R? [n] y
Hunk #1 succeeded at 277 (offset 2 lines).
patching file src/editor/edit-impl.h
Reversed (or previously applied) patch detected!  Assume -R? [n] y
Hunk #1 succeeded at 280 with fuzz 1 (offset 47 lines).
patching file src/editor/edit.c
Reversed (or previously applied) patch detected!  Assume -R? [n] y
Hunk #1 succeeded at 3281 (offset 258 lines).
Hunk #2 succeeded at 4085 with fuzz 1 (offset 319 lines).
patching file src/keybind-defaults.c
Reversed (or previously applied) patch detected!  Assume -R? [n] y
Hunk #1 succeeded at 431 (offset 11 lines).
修补程序内容:

自B7F01090258692326161E6E4B16FCD9A9378854周一2001年9月17日00:00:00
发件人:塞巴斯蒂安·格尼亚兹多斯基
日期:2021年1月23日星期六23:16:37-0600
主题:CenterView操作
---
lib/keybind.c|1+
lib/keybind.h|1+
杂项/mc.default.keymap | 1+
杂项/mc.emacs.keymap | 1+
src/editor/edit impl.h | 1+
src/editor/edit.c | 21+++++++++++++++++++++
src/keybind defaults.c|1+
7个文件更改,27个插入(+)
diff——gita/lib/keybind.cb/lib/keybind.c
索引abd44d3e2..9ab8dd5a6 100644
---a/lib/keybind.c
+++b/lib/keybind.c
@@-64,6+64,7@@static name\u keymap\u t command\u names[]{
添加密钥映射名称(PageDown),
添加密钥映射名称(半页),
添加密钥映射名称(半页向下),
+添加密钥映射名称(CenterView),
添加密钥映射名称(顶部),
添加密钥映射名称(底部),
添加密钥映射名称(拓扑筛选),
diff——gita/lib/keybind.hb/lib/keybind.h
索引af019df09..1cef8138d 100644
---a/lib/keybind.h
+++b/lib/keybind.h
@@-55,6+55,7@@enum
K_PageDown,
对半页,
对半页下,
+中景酒店,
康普,
克努巴顿,
CK_TopOnScreen,
diff——git a/misc/mc.default.keymap b/misc/mc.default.keymap
索引2931ddd0a..fe9b5adb1 100644
---a/misc/mc.default.keymap
+++b/misc/mc.default.keymap
@@-275,6+275,7@@End=End
制表符=制表符;shift制表符;ctrl制表符;ctrl-shift制表符
撤消=ctrl-u
重做=alt-r
+CenterView=alt-c
Top=ctrl home;alt lt
底部=ctrl结束;alt gt
ScrollUp=ctrl-up
diff——git a/misc/mc.emacs.keymap b/misc/mc.emacs.keymap
索引7cc305db7..9d8ee0fd8 100644
---a/misc/mc.emacs.keymap
+++b/misc/mc.emacs.keymap
@@-275,6+275,7@@End=End;ctrl-e
制表符=制表符;shift制表符;ctrl制表符;ctrl-shift制表符
撤消=ctrl-u
#重做=
+CenterView=alt-c
Top=ctrl home;alt lt
底部=ctrl结束;alt gt
ScrollUp=ctrl-up
diff——gita/src/editor/edit impl.h b/src/editor/edit impl.h
索引3ad04dbea..69f8c1683 100644
---a/src/editor/edit impl.h
+++b/src/editor/edit impl.h
@@-233,6+233,7@@void edit\u save\u size(WEdit*edit);
gboolean edit\u handle\u move\u resize(WEdit*edit,long命令);
无效编辑切换全屏(WEdit*编辑);
无效编辑移动到行(WEdit*e,长行);
+无效编辑中心显示(WEdit*e,长差异);
无效编辑移动显示(WEdit*e,长线);
无效编辑(WEdit*edit);
int edit_sort_cmd(WEdit*edit);
diff--gita/src/editor/edit.cb/src/editor/edit.c
索引50879cee2..9146069a2 100644
---a/src/editor/edit.c
+++b/src/editor/edit.c
@@-3023,6+3023,22@@@edit\u move\u to\u line(WEdit*e,long line)
在光标(e)上编辑滚动屏幕;
}
+/* --------------------------------------------------------------------------------------------- */
+/**滚动窗口,使当前行位于中心;差值是相对于该值的相对偏移量
+*职位*/
+
+空虚
+编辑中心显示(WEdit*e,长差异)
+{
+int center_line_diff=WIDGET(e)->line/2+diff;
+int current_line=e->curs_row;
+
+if(当前线<中心线<差异)
+编辑向上滚动(e,中心线-当前线);
+否则
+编辑向下滚动(e,当前线-中心线差异);
+}
+
/* --------------------------------------------------------------------------------------------- */
/**滚动窗口,使第一条可见线为“线”*/
@@-3766,6+3782,11@@edit_execute_cmd(WEdit*edit,long命令,int char_用于插入)
}
打破
+案例对照中心视图:
+/*光标线处的中心视图*/
+编辑中心显示(编辑,0);
+中断;
+
机箱顶部:
案例CK_MarkToFileBegin:
编辑\移动\到\顶部(编辑);
diff——git a/src/keybind defaults.cb/src/keybind defaults.c
索引7b87c2f5a..ad4b59780 100644
---a/src/keybinddefaults.c
+++b/src/keybinddefaults.c
@@-420,6+420,7@@static const global\u keymap\u ini\u t default\u editor\u keymap[]={
{“Goto”,“alt-l;alt-shift-l”},
{“刷新”、“ctrl-l”},
{“Shell”,“ctrl-o”},
+{“中心视图”、“alt-c”},
{“Top”、“ctrl-home;ctrl-pgup;alt-lt”},
{“Bottom”、“ctrl-end;ctrl-pgdn;alt-gt”},
{“拓扑筛选”、“ctrl-pgup”},
-- 
2.28.0
(一份执行摘要TL;DR:修补程序不是提交;格式化修补程序i
          I--J--K   <-- master
         /
...--G--H
         \
          L--M--N   <-- BRANCH