1

を呼び出すgit diffと、diffユーティリティを使用してファイルが比較されますが、デフォルトの方法ではありません。いくつかの追加オプションを使用しています。名前を付けることができるものは次のとおりです。

  • 行の前の異なるマーカー: >/< の代わりに +/-。
  • 実際には異なる行の前後に数行のコンテキスト。

しかし、これらが唯一の変更点であるかどうかはわかりません。他には何があり、デフォルトの出力を実現するためにどのコマンドライン引数がgit渡されますか? そして、たとえば、git が作成する方法で diff ファイルを比較して作成diffしたい場合 、どのコマンド ラインを使用すればよいでしょうか?a.txtb.txt

4

1 に答える 1

4

Git はデフォルトの *nix または GNU diff を使用しませんが、独自の diff アルゴリズムを実装しています。

このコードは、主にファイルbuiltin/diff.cbuiltin/diff-tree.cbuiltin/diff-index.cおよびGit ソース ツリーbuiltin/diff-files.cにあります。

これにより、高度な word-diff などの凝った処理を行うことができ、すべてのプラットフォームで信頼性の高い実装を行うことができます。

それが生成できるデフォルトの (行ベースの) 統合差分形式のパッチは、形式の他のほとんどの実装と互換性があります。IIRC、GNU diff (またはパッチでしたか?) は、git が生成したパッチを適用する際の回復力を高めるために、Git が diff に入れるいくつかのエクストラに許容範囲を追加しました。

于 2013-04-18T10:50:00.353 に答える