如何解决git am的“补丁不适用”合并冲突?

时间:2019-12-23 10:03:38

标签: git

我希望将某些提交从一个存储库移到另一个存储库,并且我想保留原始的提交,日期和提交消息以及所有内容,而不是将整个东西都挤在一起。 git format-patch master告诉我,每次提交都制作一个.patch文件,但是我在应用它们时遇到了一些麻烦(我被困在第一次提交中)。

git apply <patch file name>干净地应用更改,没有冲突或其他任何东西,但是当然它不会创建我想要的提交。

另一方面,

git am --committer-date-is-author-date -3 < <patch file name>失败,没有明确的解决方法:

Applying: <original commit message>
error: patch failed: war/WEB-INF/web.xml:162
error: war/WEB-INF/web.xml: patch does not apply
<more files listed, all of them ones that I've modified in the commit; newly created files are not listed>
error: Did you hand edit your patch?
It does not apply to blobs recorded in its index.
hint: Use 'git am --show-current-patch' to see the failed patch
Using index info to reconstruct a base tree...
M       war/WEB-INF/web.xml
Patch failed at 0001 <commit message>
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

运行此命令后,我的工作副本或暂存中没有任何更改。我本来希望获得带有合并冲突样式标记(<<<<<<<<>>>>>>>>)的已更改文件,因为我使用了-3标志,但我什至没有。

是否可以运行git am来获取所需的信息,还是应该使用git apply并进行新的提交?

1 个答案:

答案 0 :(得分:1)

您可以尝试--reject。它应用补丁的适用部分,并将拒绝的块放到相应的* .rej文件中。当-3工作不正常时,它会有所帮助。