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

时间:2019-01-03 13:03:05

标签: git format-patch git-am git-apply

我有一个理由¹使用带有--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 [...]应用补丁。

1 个答案:

答案 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选项)。