我一直在使用 git-format-patch 和 git-am 将更改从一个存储库应用到另一个存储库。文件结构是相同的,但是我应用的存储库中有一些更改导致大多数补丁失败了一些大块。但是大多数补丁程序都在行号中应用了一些模糊性。
据我所知,git-am apply
这是一个非常严格的解释,所以完全拒绝所有这些补丁。
所以我的工作流程变成了
$ git am ../the-patch.patch
# Fails because the patch doesn't apply cleanly
$ patch -p1 < ../the-patch.patch
# Applies most of the hunks, leaves .rej files for the ones that conflict
# Fix the conflicting hunks manually
$ git am --continue
如果我不必运行命令行补丁并且可以将其作为 am 命令的一部分发生,那就太好了。
如果有任何冲突,使用该--reject
标志运行似乎会创建一个包含文件中所有块的 .rej 文件,这不是我想要的。
使用--3way
标志运行失败
fatal: sha1 information is lacking or useless (the-file.java).
Repository lacks necessary blobs to fall back on 3-way merge.
Cannot fall back to three-way merge.
我认为这是因为基于此的更改集不在我要合并的存储库中。
有没有办法git-am apply
像原始补丁命令一样使用模糊匹配制作补丁,并且只创建包含失败的大块的 .rej 文件?