セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット作成
ブランチとマージ
プロジェクトの共有と更新
調査と比較
パッチ適用
デバッグ
Eメール
外部システム
サーバー管理
ガイド
- gitattributes
- コマンドラインインターフェースの慣習
- 日常的なGit
- よくある質問 (FAQ)
- 用語集
- フック
- gitignore
- gitmodules
- リビジョン
- サブモジュール
- チュートリアル
- ワークフロー
- すべてのガイド...
管理
プラミングコマンド
- 2.44.1 → 2.49.0 変更なし
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.6 変更なし
-
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>
説明
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
が指定された場合、マージする内容をファイルとして指定する代わりに、ブロブを参照するオブジェクトIDのリストとして指定される点を除いて、まったく同じ動作が発生します。
このプログラムの終了値は、エラーの場合は負の値、それ以外の場合は競合の数です(競合が127を超える場合は127に切り捨てられます)。マージがクリーンだった場合、終了値は0です。
git merge-file は、RCSのmergeの最小限のクローンとして設計されており、git[1]が必要とするRCSのmergeのすべての機能を実装しています。
オプション
- --object-id
-
マージする内容をファイルではなく、現在のリポジトリ内のブロブとして指定します。この場合、操作は有効なリポジトリ内で行われる必要があります。
-p
オプションが指定されている場合、マージされたファイル(競合がある場合はそれらを含む)は通常通り標準出力に出力されます。それ以外の場合、マージされたファイルはオブジェクトストアに書き込まれ、そのブロブのオブジェクトIDが標準出力に書き込まれます。 - -L <ラベル>
-
このオプションは最大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/b234をベースとしてtmp/a123とtmp/c345をマージしますが、
tmp/a123
とtmp/c345
の代わりにラベルa
とc
を使用します。 -
git merge-file -p --object-id abc1234 def567 890abcd
-
def567以降のブロブabc1234と890abcdの変更を結合し、それらをマージしようと試み、結果を標準出力に書き込みます。
GIT
git[1] スイートの一部