Coming from Spacemacs, one of the things that I miss is that files are automatically git add
ed after all conflicts are resolved. Wondering if there's a way to do that in vim.
1 Answer
When invoked with git mergetool
, where the mergetool.<tool>.trustExitCode
variable is true
, then exiting Vim will mark the conflict as resolved in Git. Conversely, exiting via :cquit
with no arguments (or a non-zero argument) will not cause Git to consider the conflict resolved.
With fugitive, I have merge.tool = fugitive
and merge.fugitive.cmd = vim --nofork +\"Git mergetool\"
, along with the trustExitCode = true
as mentioned. Git's support for Vim (sans fugitive) has improved dramatically lately, so you should check the default configurations and adjust them as specified/desired.
-
Hmm, I want to not have to worry about the exit code though, I want some autodetection of whether or not it's been resolved... Oct 21, 2022 at 17:08
-
@CarlDong and my approach is: it's been resolved if I save-and-quit from Vim normally. If I don't, it hasn't. Git isn't smart enough to inspect the content and tell you the conflict is resolved because it doesn't (and couldn't) understand the content. Perhaps you could describe more (or point to docs) about how Spacemacs knows when the conflicts are resolved?– D. Ben Knoble ♦Oct 21, 2022 at 19:33
-
Didn't take a look at the Spacemacs code but I just found out that
git diff --check
will indicate if there are leftover conflict markers. Might use that to script the automation. Thanks! Nov 2, 2022 at 0:47 -
I've had Git incorrectly flag a text file with
=====
as having conflict markers, so beware false-positives @CarlDong– D. Ben Knoble ♦Nov 3, 2022 at 14:19