セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 2.44.1 → 2.50.1 変更なし
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 変更なし
-
2.43.0
2023-11-20
- 2.35.1 → 2.42.4 変更なし
-
2.35.0
2022-01-24
- 2.7.6 → 2.34.8 変更なし
-
2.6.7
2017-05-05
- 2.1.4 → 2.5.6 変更なし
-
2.0.5
2014-12-17
概要
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/a123
とtmp/c345
の代わりにラベルa
とc
を使用します。 git
merge-file
-p
--object-id
abc1234
def567
890abcd
-
def567以降のブロブabc1234と890abcdの変更を結合し、それらをマージしようと試み、結果を標準出力に書き込みます
GIT
git[1]スイートの一部