我一直在使用 git-format-patch 和 git-am 将一个仓库的更改应用到另一个仓库中。文件结构相同,但是我要应用到的仓库有一些更改,导致大多数补丁失败了几个 hunks。但是大多数补丁 hunks 的行号都有一点模糊。
据我所知,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文件?