我有一个理由¹使用带有--no-prefix
选项的git-format-patch将我的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 [...]
应用补丁。
答案 0 :(得分:0)
git-am
将一些选项传递给git-apply
,包括-p
选项,其作用与patch
相同。即,使用-p0
应用此类补丁:
git am -p0 path/to/0001-patch.patch
如果git-format-patch
能够在创建的补丁文件的辅助数据中提示git-am
,那就太好了,它应该在不假设路径前缀的情况下应用它们-就像它可以提示git-am
包含当前的基本树信息(请参见--base
选项)。