日本語 ▾ トピック ▾ 最新バージョン ▾ git-merge-file は 2.44.0 で最終更新されました

名前

git-merge-file - 3方向ファイルマージを実行する

概要

git merge-file [-L <current-name> [-L <base-name> [-L <other-name>]]]
	[--ours|--theirs|--union] [-p|--stdout] [-q|--quiet] [--marker-size=<n>]
	[--[no-]diff3] [--object-id] <current> <base> <other>

説明

<current><base><other>の3つのファイルが与えられた場合、git merge-file<base>から<other>に至るすべての変更を<current>に組み込みます。結果は通常<current>に入ります。git merge-fileは、元のファイルに対する個別の変更を結合するのに役立ちます。<base>が元のファイルで、<current><other>が両方とも<base>の変更であると仮定すると、git merge-fileは両方の変更を結合します。

<current><other>の両方が共通の行のセグメントに変更がある場合、競合が発生します。競合が見つかった場合、git merge-fileは通常、警告を出力し、<<<<<<<と>>>>>>>マーカーを含む行で競合を囲みます。一般的な競合は次のようになります

<<<<<<< A
lines in file A
=======
lines in file B
>>>>>>> B

競合がある場合、ユーザーは結果を編集し、いずれかの代替を削除する必要があります。ただし、--ours--theirs、または--unionオプションが有効な場合、これらの競合はそれぞれ<current>の行、<other>の行、または両方の行を優先して解決されます。競合マーカーの長さは--marker-sizeオプションで指定できます。

--object-idが指定されている場合、マージする内容をファイルとして指定する代わりに、ブロブを参照するオブジェクトIDのリストとして指定することを除いて、まったく同じ動作が発生します。

このプログラムの終了値は、エラーの場合は負の値、それ以外の場合は競合の数です(その数を超える競合がある場合は127に切り詰められます)。マージがクリーンだった場合、終了値は0です。

git merge-fileは、RCS mergeの最小限のクローンとして設計されています。つまり、git[1]で必要とされるRCS mergeのすべての機能を実装しています。

オプション

--object-id

マージするコンテンツをファイルではなく、現在のリポジトリ内のブロブとして指定します。この場合、操作は有効なリポジトリ内で行われる必要があります。

-pオプションが指定されている場合、マージされたファイル(競合がある場合も含む)は通常通り標準出力に出力されます。そうでない場合、マージされたファイルはオブジェクトストアに書き込まれ、そのブロブのオブジェクトIDが標準出力に書き込まれます。

-L <label>

このオプションは最大3回まで指定でき、競合レポートで対応するファイル名の代わりに使用されるラベルを指定します。つまり、git merge-file -L x -L y -L z a b cは、ファイルa、b、cからではなく、ファイルx、y、zから来たように見える出力を生成します。

-p

<current>を上書きする代わりに、結果を標準出力に送信します。

-q

静かに; 競合について警告しません。

--diff3

「diff3」スタイルで競合を表示します。

--zdiff3

「zdiff3」スタイルで競合を表示します。

--ours
--theirs
--union

ファイルに競合を残す代わりに、私たちの(または彼らの、または両方の)側の行を優先して競合を解決します。

--diff-algorithm={patience|minimal|histogram|myers}

マージ中に異なるdiffアルゴリズムを使用します。現在のデフォルトは「myers」ですが、「histogram」のような新しいアルゴリズムを選択すると、重要でない一致行(異なる関数の中括弧など)によって発生する誤ったマージを回避できます。git-diff[1]--diff-algorithmも参照してください。

git merge-file README.my README README.upstream

README以降のREADME.myとREADME.upstreamの変更を結合し、それらをマージしようと試み、結果をREADME.myに書き込みます。

git merge-file -L a -L b -L c tmp/a123 tmp/b234 tmp/c345

tmp/a123とtmp/c345をベースtmp/b234とマージしますが、tmp/a123tmp/c345の代わりにラベルacを使用します。

git merge-file -p --object-id abc1234 def567 890abcd

def567以降のブロブabc1234と890abcdの変更を結合し、それらをマージしようと試み、結果を標準出力に書き込みます

GIT

git[1]スイートの一部

scroll-to-top