如何解决使用 vimdiff 在文件中解决 Git 部分合并冲突
在合并冲突解决期间,有没有办法只解决文件的某些冲突而不将该文件标记为“已解决”或将文件签出为冲突而不丢失已编辑的大块?
目前我使用 vimdiff 作为合并工具。我有一些文件进行了“部分”冲突解决,但是当使用 :wqa
退出 vimdiff 时,该文件会自动标记为“已解决”。
PS:我知道我可以使用 git checkout --conflict=merge myfile.txt
来重置文件中的所有冲突,但我不会根据需要保留我已经解决的冲突。
解决方法
尝试时,我看到未设置合并工具帮助程序来处理更改文件而不是添加文件;如果您写入更改的内容但从 vimdiff 中错误退出(使用 :cq
),它会重置文件。
但没有什么能阻止你自己做这件事。 Mergetool 只是一个方便的包装器
vimdiff -c '4winc w' -c 'winc J' `git checkout-index --stage=all myfile.txt`
这会进行一些额外的重命名和重新排序,以便更容易识别哪个是哪个,在其自身之后进行清理,或者 git add
是结果(如果您没有 :cq
)或git checkout -m
就是这样。所以自己做那个 vimdiff 并记住 b1 b2 b3 是 git 的阶段 1 2 3 内容,即基于我们的内容,您可以根据需要修复主文件,而无需帮助git add
对结果进行帮助rm .merge_file_*
,您需要{ {1}} 在某个时候清理临时文件。
或者在事后执行此操作,如果您想保留部分合并的 myfile.txt
,git mergetool
如此自信地添加为完整的解决方案,
partial=`git rev-parse :myfile.txt` # notice the `:`
git checkout -m -- myfile.txt
git show $partial >myfile.txt
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。