保存git合并前合并冲突的决议——中止



我正处于一个大的合并请求中,已经解决了一堆冲突,当我意识到我想再次与-Xignore-all-space运行合并命令时。如果我运行git merge --abort,我还必须解决我已经解决的所有冲突。是否有一种方法来记录这些(已经上演),中止合并请求,尝试使用新的标志,并重新应用旧的变化,它是可能的?

我假设你没有打开verere的自动模式。

git worktree add scratch @
git -C scratch merge otherbranch   
git -C scratch rerere
git worktree remove -f scratch

这些将重新运行当前的合并以获得显示未解决冲突的索引,并运行git rerere以记住它们。如果你的结帐是巨大的,有办法避免这种情况,寻找最小结帐合并。

那么你可以

git rerere

来记住你安排的冲突解决方案。每次git rerere运行时,它都会在内存和索引快照中搜索,在每个快照中查找冲突和解决方案。如果它记得在应用之前看到的未解决的冲突的解决方案,它就会记住任何新的内容。

然后你可以中止你的合并,用新的选项重新运行它,第三次使用git rerere,让它重用记录的分辨率。

如果你说git config rerere.enabled truegit会自动执行git rerere,在任何合并因冲突而停止之后,在提交任何合并因冲突而停止之前。如果你选择git config rerere.autoupdate true,它也会自动为你准备那些重新应用的分辨率。

最新更新