smerge-mode
競合するファイルを開いて実行してみてくださいM-xsmerge-mode
RET。競合するすべての領域が強調表示されます。また、キーバインドを追加して、競合を簡単に解決しC-hfsmerge-mode
RETます。競合を知るには、ドキュメントを参照してください。
デフォルトのプレフィックス
smerge-mode
C-c^面倒なデフォルトのプレフィックスを見つけたので、次のように変更しました C-cv
(setq smerge-command-prefix "\C-cv")
重要なキーバインド
私にとって最も重要なバインディングは次のとおりです。
smerge-next
smerge-command-prefixn次の紛争に移動することにバインドされています。
smerge-previous
smerge-command-prefixp前の競合に移動するようにバインドされています。
smerge-keep-current
smerge-command-prefixRETカーソルが置かれているバージョンを保持するためにバインドされています。
smerge-keep-mine
smerge-command-prefixm変更を保持するためにバインドされています。
smerge-keep-other
smerge-command-prefixo他の変更を保持するためにバインドされています。
smerge-ediff
smerge-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
してマージを行い、その後、変更の確認を求めるプロンプトを表示してから、マージしたファイルをステージングできます。