Git
English ▾ トピック ▾ 最新バージョン ▾ git-merge-file は 2.44.0 で最後に更新されました

NAME

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

SYNOPSIS

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>

DESCRIPTION

3つのファイル <current><base>、および <other> が与えられた場合、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 が指定されている場合、まったく同じ動作が発生しますが、何をファイルとしてマージするかを指定する代わりに、blob を参照するオブジェクト ID のリストとして指定します。

このプログラムの終了値は、エラーの場合は負の値、それ以外の場合は競合の数です(競合がその数よりも多い場合は127に切り捨てられます)。マージがクリーンだった場合、終了値は 0 です。

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

OPTIONS

--object-id

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

-p オプションが指定されている場合、マージされたファイル(競合がある場合は競合を含む)は通常どおり標準出力に出力されます。それ以外の場合、マージされたファイルはオブジェクトストアに書き込まれ、その blob のオブジェクト 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 も参照してください。

EXAMPLES

git merge-file README.my README README.upstream

README.my と README.upstream の変更を README から結合し、マージを試み、その結果を 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 からの blob abc1234 と 890abcd の変更を結合し、マージを試み、結果を標準出力に書き込みます。

GIT

git[1] スイートの一部

scroll-to-top