如何 '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
选项)。
我有理由¹使用 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
选项)。