git am 错误:“补丁不适用”

2024-03-29

我正在尝试使用 git 将多个提交从一个项目移动到第二个类似的项目。

所以我创建了一个补丁,包含 5 个提交:

git format-patch 4af51 --stdout > changes.patch

然后将补丁移动到第二个项目的文件夹并想要应用补丁:

git am changes.patch 

...但它给了我错误:

Applying: Fixed products ordering in order summary.
error: patch failed: index.php:17
error: index.php: patch does not apply
Patch failed at 0001 Fixed products ordering in order summary.
The copy of the patch that failed is found in:
   c:/.../project2/.git/rebase-apply/patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

所以我打开了index.php,但那里没有任何变化。我假设一些>>>>>>>标记等,就像解决合并冲突时一样,但文件中没有标记冲突。git status还给了我已更改文件的空列表(仅changes.patch在那里)。所以我跑git am --continue,但出现另一个错误:

Applying: Fixed products ordering in order summary.
No changes - did you forget to use 'git add'?
If there is nothing left to stage, chances are that something else
already introduced the same changes; you might want to skip this patch.
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort". 

我使用的是 Windows 7 和最新的 git 版本“1.9.4.msysgit.1”

附:经过几个小时的谷歌搜索后,我找到了一些解决方案,但对我来说没有任何作用:


git am -3 changes.patch 

给出奇怪的“sha1信息”错误:

Applying: Fixed products ordering in order summary.
fatal: sha1 information is lacking or useless (index.php).
Repository lacks necessary blobs to fall back on 3-way merge.
Cannot fall back to three-way merge.
Patch failed at 0001 Fixed products ordering in order summary.
The copy of the patch that failed is found in:
   c:/.../project2/.git/rebase-apply/patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort". 

git am changes.patch --ignore-whitespace --no-scissors --ignore-space-change

给出第一个错误,如上所述:“错误:补丁失败:index.php:17”,但没有冲突标记index.php加入。


什么是补丁?

补丁只不过是一系列指令(见下文):“在这里添加这个”,“在那里删除那个”,“将第三个东西更改为第四个”。那是why吉特告诉你:

The copy of the patch that failed is found in:
c:/.../project2/.git/rebase-apply/patch

您可以在您最喜欢的查看器或编辑器中打开该补丁,在您最喜欢的编辑器中打开要更改的文件,然后使用以下命令“手动应用”补丁:you know(而 Git 没有)弄清楚how当要更改的文件现在看起来很少或根本不像之前更改时所做的那样(这些更改作为补丁交付给您)时,请执行“在此处添加此内容”。

再来一点

三向合并引入的信息比简单的“一系列指令”“多一点”:它告诉您什么original文件的版本也是如此。如果您的存储库有原始版本,则在您的存储库中工作的 Git 软件可以比较you对文件做了什么patch说要对文件执行操作。

正如您在上面看到的,如果您请求三向合并,Git 无法在其他存储库中找到“原始版本”,因此它甚至无法attempt三路合并。因此,您不会得到任何冲突标记,并且您must手动进行补丁应用。

(在某些情况下,“多一点”部分会丢失。额外的信息由Index:补丁中的行,例如:

diff --git a/go.mod b/go.mod
index 1fefa60..38a3a41 100644

第二行可能是这样的,例如:

index 1fefa6021dcd205c1243e236d686595920d9621b..38a3a41434fda3a68ce3356092a89afca81eb614 100644

在更完整的情况下。请注意两个哈希 ID,由两个点分隔。左边的文件是 Git 软件将使用的文件,用于尝试在您自己的存储库中查找具有给定哈希 ID 的文件。将提供的补丁应用于该文件,这必须存在, 必须有效并且必须生成一个哈希 ID 为右侧的文件,完成所有这些操作即可为 Git 提供所需的所有附加信息。)

Using --reject

当你必须手动应用补丁时,Git 仍然可以应用most自动为您提供补丁,只留下几部分给能够推理代码(或任何需要修补的内容)的实体。添加--reject告诉 Git 这样做,并将补丁的“不适用”部分留在拒绝文件中。如果您使用此选项,您仍然必须手动应用每个失败的补丁,并弄清楚如何处理被拒绝的部分。

完成所需的更改后,您可以git add修改后的文件及使用git am --continue告诉 Git 提交更改并继续下一个补丁。

如果无事可做怎么办?

由于我们没有您的代码,我无法判断情况是否如此,但有时,您最终会得到其中一个补丁的内容,例如“修复第 42 行单词的拼写”当那里的拼写已经固定的时候。

在这种特殊情况下,您在查看了补丁和当前代码后,应该对自己说:“啊哈,this应该完全跳过补丁!”此时您将使用 Git 已打印的其他建议:

If you prefer to skip this patch, run "git am --skip" instead.

如果你跑git am --skip,Git 将跳过该补丁,因此,如果邮箱中有五个补丁,它最终只会添加四个提交,而不是五个(或者如果跳过两次,则添加三个而不是五个,依此类推)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git am 错误:“补丁不适用” 的相关文章

  • 如何在 git 中删除 subversion 远程?

    我有一个最初使用 git svn 创建的 git 存储库 现在我有一个推送到的 git 服务器 但 svn 存储库已丢失 我可以删除 svn 远程吗 如何 您可以编辑 git config文件并删除与要删除的遥控器关联的部分 您要删除的行可
  • 如何终止当前正在运行的git进程? [复制]

    这个问题在这里已经有答案了 git commit m 45 fatal Unable to create F SoftifyBD Projects proj 4 CMS Latest contentmanagementsystem git
  • 如何在 git diff 中按标点符号拆分单词?

    我对以下命令有一些运气 git diff color words lt gt space lt gt 但它似乎没有在第一个字符类中正确地否定方括号 我试过这个 git diff color words lt gt space lt gt 为
  • git:如何查明某个分支是否有拉取请求?

    我在 git 分支上 有没有办法查看该分支是否有拉取请求 在这种特殊情况下 Atlassian Stash 用于管理拉取请求 当然我可以使用Stash的Web界面来搜索拉取请求 但我也可以仅使用 git 命令行工具从脚本执行此操作吗 Cor
  • 使用 Git 的 Spring Cloud 配置服务器 - 无法克隆或签出存储库连接超时

    我正在使用 GIT 在 Spring Cloud Config Server 上进行 POC Spring Boot 1 5 3 RELEASE 爪哇1 8 弹簧工具套件https github com kishornpatil https
  • Git:结帐而不运行结帐后挂钩

    我有一个我喜欢的结帐后挂钩 大多数时候 但有时我知道运行它会浪费时间 或者 因为它会删除并重建我的开发数据库 所以我不希望它去做它的事情 有没有跳过钩子的 git 选项 公平地说 我已经开始寻找一个了 我认为没有命令行选项可以完成您想要的操
  • 如何预览 Git 中的隐藏内容?

    我想检查一个存储 并找出如果我将其应用于当前状态的工作树 它会发生什么变化 我知道我可以对存储进行 git diff 但这向我展示了工作树和存储之间的所有差异 而我只是想知道存储应用将改变什么 git stash show将向您显示最近存储
  • 如何重命名 GitHub 网站上的目录/文件夹?

    我在 GitHub 网站上找到了一种方法rename https github com blog 1436 moving and renaming files on github一个文件并成功完成 我也找到了一种方法rename https
  • Git - 推送到远程存储库中的远程跟踪分支

    当简单地做git push到远程存储库 其master分支得到更新 对于非裸存储库来说 这是不希望出现的情况 最近的 Git 版本显示的警告消息清楚地表明了这一点 我希望能够推送到远程存储库 并拥有其之一远程追踪分支进行更新 稍后 当我登录
  • git在Windows和Linux之间切换后强制刷新索引

    我有一个Windows和Linux共享的磁盘分区 格式 NTFS 它包含一个 git 存储库 约 6 7 GB 如果我只使用Windows or 只使用Linux操作 git 存储库一切正常 但是每次切换系统的时候git status命令将
  • 节点项目的 Azure git 部署失败

    我正在尝试将我的项目部署到azure 它正在失败 这些是我采取的步骤 git init git config core longpaths true git add git commit m initial commit 所有这些都有效 我
  • 在 git 子模块中签出分支

    如何从子模块内更改分支 当我跑步时git branch从子模块内 我看到以下输出 gt git branch HEAD detached from 229a7b2 master 我如何将自己置于一个新的分支上 喜欢development 只
  • 在 git repo 中查找超过 x MB 且 HEAD 中不存在的文件

    我有一个 Git 存储库 用于存储随机的内容 主要是随机脚本 文本文件 我设计的网站等 随着时间的推移 我删除了一些大型二进制文件 通常为 1 5MB 这些文件会增加存储库的大小 而我在修订历史记录中不需要这些文件 基本上我希望能够做到 m
  • 使用 TFS 个人访问令牌克隆 Git 存储库

    我正在尝试以编程方式克隆 git 存储库 我的 ASP NET MVC 应用程序正在创建并启动一个进程 处理进程的代码工作正常 但是当尝试使用本地 TFS PAT 克隆 git 存储库时 身份验证失败 我无法使用 NTLM 或要求用户输入凭
  • git 预提交钩子格式代码 - Intellij/Android Studio

    本要点展示了如何在预提交时使用 Eclipse 格式化程序自动格式化 Java 代码 Source https gist github com ktoso 708972 https gist github com ktoso 708972
  • Git 不断提示我输入密码

    我已经使用 Git 一段时间了 但是不断要求输入密码开始让我感到厌烦 我使用的是 Mac OS X 和 GitHub 并且按照 GitHub 的说明设置了 Git 和我的 SSH 密钥设置 Git 页面 http help github c
  • 相当于“svn update -r”的 git 是什么?

    我是最近的 git 转换者 能够使用 git svn 将我的分支保留在本地而不干扰 svn 服务器真是太棒了 最新版本的代码中存在一个错误 我想确定一个它起作用的时间 以便我可以使用 git bisect 我找不到正确的命令来及时返回 谢谢
  • 忽略 git 中的本地配置文件

    Rails 应用程序中有一些本地文件 属于我们存储库的一部分 我希望 git 忽略它们 基本上 我希望 git 忽略我对 config environments 目录和 config application rb 文件中的任何内容所做的所有
  • git diff 在尖括号中显示 unicode 符号

    我有一个带有 unicode 符号 俄语文本 的文件 当我修复一些拼写错误时 我使用git diff color words 看看我所做的改变 如果是 unicode 西里尔文 符号 尖括号会造成一些混乱 如下所示 cat p1 cat p
  • 分支明显不同,但提交历史是相同的

    git status告诉我我的分支和我在另一个存储库上开始的分支已经分歧 On branch master Your branch and origin master have diverged and have 13 and 13 dif

随机推荐

  • 锚定在桌子周围 - 无法在 Outlook 中工作

    我正在为 Mailchimp 开发一份时事通讯 其中一个块的 HTML 结构如下 table border 0 cellpadding 0 cellspacing 0 width 100 align center tr td valign
  • 是否可以获取所有实现接口的类? [复制]

    这个问题在这里已经有答案了 我可以通过反思或类似的方式来做到这一点吗 没有 100 可靠的方法可以做你想做的事 原因是 Java 中类加载的工作方式 Java 中的类是 按需 加载的 第一次在代码中引用类 无论是静态还是动态 时 JVM 将
  • int64_t的宽度,总是64位吗?

    对于以下代码 static inline float fix2float int64 t f return float f 1 lt lt 60 lt error here 编译器向我发出这些警告 warning left shift co
  • Flex 项目均匀分布,但第一个项目左对齐

    弹性盒的justify content space around使我的列表项水平均匀分布 有没有办法拥有完全相同的东西 唯一的区别是左边的第一个项目左边没有空间 也就是说 列表从容器的左边缘 开始 而不是使用justify content
  • kafka Consumer 0.10 向后兼容吗?

    kafka消费者0 10与0 9代理兼容吗 如果我没记错的话 0 9 消费者仍然被认为是测试版 而 0 10 是稳定的 对吗 这就是为什么我有兴趣使用 0 10 版本 但我的代理版本是 0 9 我还不想升级 如果您想使用 0 10 客户端
  • 如何在响应中返回特定字符后关闭 netcat 连接?

    我们有一个非常简单的 TCP 消息传递脚本 它将一些文本发送到服务器端口 该端口返回并显示响应 我们关心的脚本部分看起来像这样 cat someFile netcat somehost 1234 一旦我们获得特定的字符代码 具体来说 001
  • “HttpRequest”不包含“Params”的定义

    我在用着 NET核心2 0 2创建一个ASP NET网络应用程序在C 每次我使用Request Url在我的控制器中 dotnet run输出错误 错误CS1061 HttpRequest 不包含 Url 的定义 并且找不到接受 HttpR
  • 从超类 static main 创建子类

    我有一个通用的抽象类 SuperClass 我想要有一个main方法 这将是每个子类的默认 main 方法 并且会执行相同的操作 但具有派生并调用它的正确子类对象 像这样 public abstract class SuperClass s
  • 错误:行太大:大小 8168,最大大小 8164

    我正在使用 PostgreSql 9 2 我有很多角色 并且所有角色都被授予了模式的 USAGE 权限 当我尝试创建新用户并授予权限时 我收到错误 CREATE ROLE my user GRANT USAGE on schema my s
  • 如何检查 PHP 是否打开了端口 465 和 587?

    我正在尝试使用 PHPMailer 通过 SMTP 和 gmail 发送电子邮件 我使用的确切脚本适用于其他服务器 但不适用于该特定托管公司的服务器 我已经检查过phpinfo 它告诉我allow url fopen is on并且没有di
  • 寻求有关以最小的开销在 Netflix Eureka 可发现的 Spring Boot 服务上进行开发的正确方法的建议

    我们正在运行一个基于 Spring Boot 的环境 其中包含大约 15 个微服务和一个注册到 Eureka 的 Zuul 边缘网关 目前 我已经设置了所有微服务通过 Zuul 网关调用其他微服务 例如 如果 serviceA 需要调用 s
  • 带接收器的 Kotlin 函数参数,从 Groovy 调用

    Kotlin 和 Groovy 都提供了一种编写高阶函数的方法 其中函数参数具有隐式接收器 科特林版本 class KotlinReceiver fun hello println Hello from Kotlin class Kotli
  • 如果值为 null,则在提交之前使用 js 或 jQuery 更改输入文本值

    如果输入值为 null 如何在提交之前使用 js 或 jQuery 更改输入文本值 感谢帮助 With jQuery http jquery com 您可以使用以下命令将回调绑定到提交事件 submit http api jquery co
  • 为什么我应该始终启用编译器警告?

    我经常听说在编译 C 和 C 程序时我应该 始终启用编译器警告 为什么这是必要的 我怎么做 有时我也听说我应该 将警告视为错误 我是不是该 我怎么做 为什么我应该启用警告 众所周知 C 和 C 编译器不善于报告一些常见的程序员错误默认情况下
  • Capybara 无法识别动态添加的 DOM 元素?

    在使用 Capybara 和 Selenium 时 我似乎在测试使用 jQuery 执行的 javascript 操作时遇到了麻烦 预期的行为是当用户单击链接 添加资源 时动态生成表单 Capybara 将能够单击该链接 但无法识别新的表单
  • Greasemonkey:新更新中“未定义 GM_xmlhttpRequest”

    为什么这个简单的 Greasemonkey 脚本对我不起作用https jsfiddle net pghnsw8z 1 https jsfiddle net pghnsw8z 1 我的意思是 在进行 ajax 调用时 我没有得到成功的响应
  • 无需表单即可在屏幕上绘图

    是否可以在不使用表单应用程序的情况下在屏幕上创建一个大的白色矩形 如果可能的话 它应该覆盖整个屏幕 我知道我必须使用System Drawing并尝试了几个步骤 但没有一个真正在我的屏幕上打印任何内容 方法一 调用Windows API 你
  • ANDROID从url获取内容

    我在使用 Android 时遇到问题 我必须能够从生成内容的 URL 中读取内容 然后将它们放入数组中 分割读取的字符串 我使用了不同的方法 但无法读取该字符串 我能怎么做 这是我现在使用的函数 继续出现字符串 nn va private
  • 具有可比较列表与 TreeSet

    选项 1 创建一个实现 Comparable 的列表 并在每次添加值时使用 collections sort List l 对它进行排序 选项 2 创建一个 TreeSet 它始终保持排序 哪一个会更快 我问这个是因为 List 为我提供了
  • git am 错误:“补丁不适用”

    我正在尝试使用 git 将多个提交从一个项目移动到第二个类似的项目 所以我创建了一个补丁 包含 5 个提交 git format patch 4af51 stdout gt changes patch 然后将补丁移动到第二个项目的文件夹并想