我有一个git仓库,想要将一份早在2007年制作的非常古老的补丁应用到它上面。由于仓库的内容已经发生了很大变化,当我尝试应用补丁时,由于冲突而失败。
我想在git中处理冲突,通过将补丁作为新分支添加并合并回主分支。但是为了做到这一点,我需要定位补丁可以干净地应用到的最早提交。是否有一种简单的方法在git中实现这一点?
我想在git中处理冲突,通过将补丁作为新分支添加并合并回主分支。但是为了做到这一点,我需要定位补丁可以干净地应用到的最早提交。是否有一种简单的方法在git中实现这一点?
你可以使用 git bisect
来完成这个任务:像正常进行二分查找一样开始查找,然后使用:
git bisect run git apply --check ${patch}
这将使用命令“can this patch apply”来自动确定修订版是否好或坏。不久之后,您应该会找到正确的位置。
这将为您提供最近的提交,其中补丁将适用。
如果您想要最早的提交,请使用“不适用”作为测试运行第二个二分查找,从存储库的开头到成功应用它的地方。
git apply --3way
来回退到三方合并,如果补丁无法干净地应用。从man git apply
中得知: