如何 'git-am' 应用使用 'git-format-patch --no-prefix' 创建的补丁?

How to 'git-am' apply a patch created with 'git-format-patch --no-prefix'?

我有理由¹使用 git-format-patch 和 --no-prefix 选项创建我的 git 提交作为补丁文件。

此选项将补丁输出更改为不在补丁文件的文件路径中添加 git-diff 特定前缀 a/ / b/。它允许 patch 等工具应用补丁文件,而无需将 -p1 作为参数传递。

到目前为止一切都很顺利。但是,似乎我不能再将它们应用到 Git 本身 (git-am):

$ git am path/to/0001-patch.patch
Applying: <commit message subject>
error: <path>: does not exist in index
Patch failed at 0001
[...]

我现在如何将它们与 git-am 一起应用,同时保持简单的 patch 兼容性?

¹ 它允许我在 Bazel 中将它用作补丁文件而无需自定义补丁命令,因为您需要使用 patch -p1 [...].[=21 应用补丁=]

git-am 将一些选项传递给 git-apply,包括 -p 选项,它与 patch 的作用相同。即,使用 -p0:

应用此类补丁
git am -p0 path/to/0001-patch.patch

如果 git-format-patch 能够在创建的补丁文件的辅助数据中提示 git-am 那就太好了,它应该在不假设路径前缀的情况下应用它们——就像它现在可以用基本树信息提示 git-am(参见 --base 选项)。