Potresti provare smerge-mode
semplicemente aprire il file in conflitto e farlo M-xsmerge-mode
RET. Evidenzierà tutte le regioni in conflitto. Aggiunge inoltre le combinazioni di tasti per risolvere facilmente i conflitti, consultare la sua documentazione C-hfsmerge-mode
RETper conoscerli.
Prefisso predefinito
Trovo il prefisso predefinito per smerge-mode
C-c^ingombrante, quindi l'ho cambiato in C-cv
(setq smerge-command-prefix "\C-cv")
Tasti importanti
Per me gli attacchi più importanti sono:
smerge-next
destinato a smerge-command-prefixnpassare al prossimo conflitto.
smerge-previous
destinato a smerge-command-prefixppassare al conflitto precedente.
smerge-keep-current
destinato a smerge-command-prefixRETmantenere la versione su cui si trova il cursore.
smerge-keep-mine
destinato a smerge-command-prefixmmantenere le modifiche.
smerge-keep-other
destinato a smerge-command-prefixomantenere altre modifiche.
smerge-ediff
destinato a smerge-command-prefixEiniziare una sessione ediff per unire i conflitti. Questo è lo stesso di vc-resolve-conflicts
(grazie a @phils e @Malabarba per averlo segnalato).
Abilitazione automatica della modalità smerge
AGGIORNAMENTO: Quanto segue è rilevante solo nelle versioni precedenti di Emacs 25.1
, quanto segue può causare problemi nelle versioni successive, consultare https://github.com/magit/magit/issues/3897
Inoltre potresti essere interessato ad abilitare automaticamente smerge-mode
quando visiti un file / buffer con marcatori di conflitto che puoi usare qualcosa come il seguente per raggiungere questo obiettivo
(defun my-enable-smerge-maybe ()
(when (and buffer-file-name (vc-backend buffer-file-name))
(save-excursion
(goto-char (point-min))
(when (re-search-forward "^<<<<<<< " nil t)
(smerge-mode +1)))))
(add-hook 'buffer-list-update-hook #'my-enable-smerge-maybe)
Nota che sto usando buffer-list-update-hook
e non find-file-hook
perché la maggior parte delle volte ottengo conflitti in un buffer che è già aperto in emacs, nel qual caso non find-file-hook
è di aiuto.
Controlla anche gli altri metodi menzionati in questa risposta
e
sui file mostrati come in conflitto. Magit si avviavaediff
per eseguire l'unione e in seguito ti chiedeva di confermare le modifiche, quindi puoi mettere in scena il file unito.