【问题标题】:git am: Patch format detection failedgit am:补丁格式检测失败
【发布时间】:2018-08-25 01:53:03
【问题描述】:

我以前从未在 Git 中使用过补丁,我需要一些帮助。我正在尝试将补丁应用到 Git 存储库以测试 Wine 补丁,特别是 this patch here。所以我做了以下事情:

$ git clone git://source.winehq.org/git/wine.git
$ cd wine
$ nano patch.p1

然后我用 Ctrl+Shift+V 粘贴补丁的内容并使用 Ctrl+O 保存。然后我尝试了这个:

$ git am patch.p1
Patch format detection failed.

我做错了什么?我以前从未打过补丁。

【问题讨论】:

  • git am 应用邮箱格式的补丁。你链接的那个不是。你可以在上面使用git apply。然而,补丁中的代码是非常荒谬的,除非有相反的条件(负数移位会产生未定义的行为)。
  • @torek 虽然I am having trouble compiling Winegit apply 似乎有效,因为它没有给出任何错误。如果您想将该评论发布给补丁创建者:bugs.winehq.org/show_bug.cgi?id=44742
  • 我没有登录,也不打算创建一个,除非我真正开始使用 Wine。但是:+ if(MaskLength <= 32) + return ERROR_INVALID_PARAMETER; + *Mask = 0xffffffff << ( 32 - MaskLength ); 似乎测试应该是 >= 而不是 <=。 32-33 = -1(如果无符号,则为 0xffffffff),这不是有效的 << 值。但是我不知道这个函数的意图是什么。
  • 我的问题是,我已经在windows中生成了补丁,并尝试在linux中应用,但它不起作用。我不得不在 Windows 中应用它。我相信这与两个 OS/Git 配置之间的 CRLF 设置有关

标签: git patch wine


【解决方案1】:

Patch format detection failed. 可能意味着您使用了错误的命令:使用 git apply 而不是 git am 或其他方式。

请参阅What is the difference between git am and git apply? 了解更多关于 2 之间的区别。

【讨论】:

    【解决方案2】:

    使用以下命令: 补丁 -p1

    • 系统会要求您指定“要修补的文件”,提及完整路径/
    • 假设 -R [n]: n
    • 仍然申请? [n]: 是的

    对补丁中存在的所有文件执行此操作。

    • 如果发生任何合并冲突,请检查“.rej”文件中的冲突,该文件包含 已生成并解决和应用这些更改。
    • 执行“git add”并“提交”您的更改。

    【讨论】:

      猜你喜欢
      • 2019-09-23
      • 1970-01-01
      • 2014-11-08
      • 2016-12-21
      • 2012-09-30
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多