smerge-mode競合するファイルを開いて実行してみてくださいM-xsmerge-modeRET。競合するすべての領域が強調表示されます。また、キーバインドを追加して、競合を簡単に解決しC-hfsmerge-modeRETます。競合を知るには、ドキュメントを参照してください。
デフォルトのプレフィックス
smerge-mode C-c^面倒なデフォルトのプレフィックスを見つけたので、次のように変更しました C-cv
(setq smerge-command-prefix "\C-cv")
重要なキーバインド
私にとって最も重要なバインディングは次のとおりです。
smerge-nextsmerge-command-prefixn次の紛争に移動することにバインドされています。
smerge-previoussmerge-command-prefixp前の競合に移動するようにバインドされています。
smerge-keep-currentsmerge-command-prefixRETカーソルが置かれているバージョンを保持するためにバインドされています。
smerge-keep-minesmerge-command-prefixm変更を保持するためにバインドされています。
smerge-keep-othersmerge-command-prefixo他の変更を保持するためにバインドされています。
smerge-ediffsmerge-command-prefixE競合をマージするためにediffセッションを開始するようにバインドされています。これはvc-resolve-conflicts(これを指摘してくれた@philsと@Malabarbaに感謝します)と同じです。
smerge-modeを自動的に有効にする
更新: 以下は、以前のEmacsバージョンにのみ関連します。次の25.1バージョンでは問題が発生する可能性があります。https://github.com/magit/magit/issues/3897を参照してください
さらにsmerge-mode、競合マーカーを持つファイル/バッファにアクセスするときに、次のようなものを使用してこれを達成できるように自動的に有効にすることに興味があるかもしれません
(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)
私が使っていることに注意buffer-list-update-hookしていないfind-file-hook私はすでにemacsの中に開いているバッファ内の紛争取得時間のほとんどが、その場合、以来、find-file-hook役に立たないのです。
この回答に記載されている他の方法も確認してください
e競合していると表示されたファイルを押します。Magitが起動ediffしてマージを行い、その後、変更の確認を求めるプロンプトを表示してから、マージしたファイルをステージングできます。