4

--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 [...].

4

1 回答 1

3

git-am将一些选项传递给git-apply,包括-p选项,它与 . 的作用相同patch。即,应用这样的补丁-p0

git am -p0 path/to/0001-patch.patch

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

于 2019-01-03T13:03:05.473 回答