使用vimdiff解决Git部分合并冲突文件

3
在解决合并冲突时,有没有办法仅解决文件的一些冲突,并且不将该文件标记为“已解决”,或者在不丢失已编辑块的情况下将文件标记为冲突并进行检出?
目前我正在使用vimdiff作为合并工具。 我有一些文件进行了“部分”冲突解决,但是当使用:wqa 退出vimdiff时,该文件会自动标记为“已解决”。
PS:我知道我可以使用 git checkout --conflict=merge myfile.txt 重置文件中的所有冲突块,但我需要保留已经解决的冲突。
1个回答

3
尝试后,我发现合并工具助手没有设置用于处理更改文件但不添加它的功能;如果您编写了更改的内容,但从vimdiff中采取错误退出(使用:cq),它会重置文件。
但是,没有什么阻止您自己执行此操作。Mergetool只是一个方便包装器。
vimdiff -c '4winc w' -c 'winc J' `git checkout-index --stage=all myfile.txt`

它做一些额外的重命名和排序,使标识变得更容易,并清理自己,在你不使用`:cq`时将结果`git add`,或者如果你使用,则`git checkout -m` 。所以请自己进行vimdiff,记住b1 b2 b3是git stage 1 2 3的内容,即base ours theirs,您可以随意修复主文件,而不需要助手帮忙添加结果,您会想要在某个时间点上 `rm .merge_file_*` 来清理临时目录。
或者,如果您想保留部分合并的 `myfile.txt` 作为已完成的解决方案,可以事后这样做,(编辑:我知道的方式感觉很笨拙,Git v1.4左右已经有了直接的方法)。
git update-index --unresolve myfile.txt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接