Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.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
为其中一个“构建修补程序”;吉特am“;或;git apply";_Git - Fatal编程技术网

为其中一个“构建修补程序”;吉特am“;或;git apply";

为其中一个“构建修补程序”;吉特am“;或;git apply";,git,Git,我一直在尝试应用一个git补丁,它不是通过git格式补丁(1)生成的,因此git无法应用。相关存储库在此处()公开可用,补丁内容在此处()公开可用 如您所见,这里的“补丁”实际上是git diff(1)命令的原始shell输出。我开始下载电子邮件作为一个.eml文件,并尝试“git am”和“git apply”。两者都失败了。我尝试了一些调整,包括删除diff末尾的文本,并将diff内容粘贴到另一个我知道git可以接受的补丁文件中(并在diff开始之前更改diffstat以提及正确的文件)。以

我一直在尝试应用一个git补丁,它不是通过git格式补丁(1)生成的,因此git无法应用。相关存储库在此处()公开可用,补丁内容在此处()公开可用

如您所见,这里的“补丁”实际上是git diff(1)命令的原始shell输出。我开始下载电子邮件作为一个.eml文件,并尝试“git am”和“git apply”。两者都失败了。我尝试了一些调整,包括删除diff末尾的文本,并将diff内容粘贴到另一个我知道git可以接受的补丁文件中(并在diff开始之前更改diffstat以提及正确的文件)。以上两个命令都无法使用这些调整


我知道这个差异很小,我手工应用它所花的时间比写堆栈溢出要少,但有东西告诉我,这个问题以前一定困扰过其他人,必须有一个解决方案,实际使用git的补丁应用工具。让我知道-谢谢

git apply
可以读取由
patch
生成的补丁。但是,对于每个blob,它们将缺少
索引
行,这意味着如果补丁的上下文与当前提交不匹配,Git将无法找到文件的第三个版本,这在补丁中经常发生。通过索引行提供blob哈希ID,Git可以找到第三个版本,并使用它执行文件级合并操作。我已经很久没有尝试过这样做了,所以我忘记了什么转换(如果有的话)是合适的。您可能想要或需要
-p0
,因为Git diff上有
a/
b/
前缀,而普通补丁通常没有任何前缀。另外值得注意的是,使用
patch
(独立实用程序)而不是
git apply
,可能更明智。下面是我在尝试应用编辑过的补丁时看到的情况,它是否符合您的期望?--128 git am 0001-Update-filesystem-books.patch application:Update filesystem books error:git diff header在删除1个前导路径名组件(第12行)时缺少文件名信息修补程序在0001更新filesystem books时失败提示:使用“git am--show current patch=diff”在解决此问题后查看失败的修补程序,请运行“git am--继续”。如果您希望跳过此修补程序,请运行“git am--跳过”。要恢复原始分支并停止修补,请运行“git am--中止”。--无论如何,请运行“patch-p0”“也不行。我的错误消息如下所示:--在输入行6找不到要修补的文件--可能您使用了错误的-p或--strip选项?导致这一结果的文本是:------------------------------diff--git a/books/kestrel/std/system/ruler-extenders-plus-tests.lisp | b/books/kestrel/std/system/ruler-extenders-plus-tests.lisp | index 008e6304f..9a8f17604 100644 |--a/books/kestrel/std/system/ruler-extenders-plus-tests.lisp++b/books/kestrel/std/system/rule-extenders-plus-tests.lisp------------------啊,这个差异确实有a/和b/so
-p1
可能是正确的。但是我也看到了一个
索引
行:你确定这是一个简单的差异吗?(或者是在你编辑了差异之后?如果是的话,我会尝试对原始未编辑的差异进行
-p0