С установленным trustExitCode
(который, по-видимому, используется по умолчанию для vimdiff
), вам потребуется выйти из vim с ненулевым кодом выхода, чтобы git распознал файлы как не слитые.
В vim это означает использование :cq[uit]
для выхода. Обратите внимание, что :cq
ведет себя как :qall!
, то есть он молча отбрасывает все несохраненные изменения и выходит из vim (с ненулевым кодом выхода).
При этом (git v2.14.2.windows.1; git bash; vim 8.0.606) git пишет
merge of exampleFile.cpp failed
Continue merging other unresolved paths [y/n]?
И он оставляет файл в конфликтном состоянии. Если бы я завершил работу с :qall!
, конфликт мог бы все еще быть в файле, но git пометил бы его как разрешенный.
Что касается того, почему git все еще принимает его как разрешенное при использовании trustExitCode = false
, я немного не уверен. При открытии файла с git mergetool
отметка времени обновляется до текущего времени, что, по-видимому, указывает на то, что vimdiff (или git) касается файла. Это может быть причиной того, что git не будет запрашивать подтверждения разрешения конфликта, поскольку он видит обновленную временную отметку и предполагает, что файл был разрешен.