GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Merging.html ・ emacs-doc.conao3.com

30.1.11.3 ブランチのマージ

C-x v m

分散型バージョン管理システムで、別のブランチの変更内容を現在のブランチにマージします。

集中型バージョン管理システムを用いて、別のブランチからの変更内容を現在のVCファイルセットにマージします。

ブランチを開発している際、別のブランチで既に行われた変更をマージする必要がある場合があります。2つのブランチで変更が重複したり競合したりしている可能性があるため、これは単純な操作ではありません。

分散型バージョン管理システムでは、C-x v m (vc-merge) コマンドで変更をマージします。Bazaarでは、bzr merge コマンドに渡す正確な引数の入力が求められ、可能であれば適切なデフォルト値が提示されます。Gitでは、マージ元のブランチ名の入力が求められ、(現在のリポジトリで認識されているブランチ名に基づいた)補完機能が働きます。Mercurialでは、hg merge に渡す引数の入力が求められます。マージコマンドの実行結果は、別のバッファに表示されます。

CVSのような集中型バージョン管理システムでは、C-x v m のプロンプトでブランチID、または2つのリビジョンIDのペア(ブランチの切り替えを参照)の入力を求められます。その後、そのブランチからの変更、あるいは指定した2つのリビジョン間の変更を特定し、それらを現在のVCファイルセットにマージします。プロンプトで単に RET と入力すれば、Emacsはファイルをチェックアウトして以降、同じブランチに加えられたあらゆる変更を単純にマージします。

マージを実行した直後は、ワーキングツリーのみが変更され、C-x v D および関連コマンドを用いてマージによって生じた変更を確認できます(旧リビジョンの確認と比較を参照)。2つのブランチに重複する変更が含まれていた場合、マージによってコンフリクトが発生します。マージコマンドの出力に警告が表示され、影響を受けた各ワークファイルに、2組の競合する変更を囲む形でコンフリクトマーカーが挿入されます。その後、コンフリクトが発生しているファイルを編集して解決する必要があります。デフォルトでは、EmacsはVCコンフリクトのあるバッファを特別なSmergeモードに配置し、マージコンフリクトを解決するための専用コマンドを提供します。コンフリクトの解決が完了し、解決済みのファイルを保存したら、マージを反映させるために、通常の手順でそれらのファイルをコミットする必要があります(バージョン管理下での基本的な編集を参照)。