`git diff` は `diff` と関係がありますか?

`git diff` は `diff` と関係がありますか?

git diffに関係しているdiff

  1. git diffに基づいて実装されていますかdiff?

  2. コマンドライン構文git diffに似ているdiff? どちらか一方を学ぶと、もう一方の使用に大いに役立ちますか?

  3. 出力ファイルは同じ形式になっていますか?git patchとの両方で使用できますかpatch? ( はありますかgit patch? と はどのような関係がありますかpatch?)

ありがとう。

答え1

ファイル形式は相互運用可能です。Git は最適な形式を使用しますdiff -u。また、追加の種類の変更を表すためにこれを拡張します。

と同等なのはpatchですgit apply。これは、変更を作業ツリーに適用するだけでなく、インデックスに変更をステージングします。

git applyより厳密だったと記憶していますpatchが、リファレンス ドキュメントでは明確な比較は行われていないようです。有効化または無効化できるテスト/エラーがいくつか記載されています。

リファレンス ドキュメントでは、特定のオプションを使用すると、git リポジトリの外部でも「GNU patch の代替」として使用できることも示されています。

答え2

git-diffはdiffよりも多くの機能を提供しており、diffは次のような行を生成するため、出力パッチは相互運用可能ではないと思います(いくつかの追加オプションなし)。

diff -ruNa dir1/file1.txt dir2/file1.txt

一方git-diffは次のような行を生成します

diff --git a/dir1/file1.txt b/dir2/file1.txt

(ソースと宛先のプレフィックス、--no-prefixおよびさまざまなオプションに注意してください)

git-diff の追加機能は次のとおりです。

  • 移動/名前変更されたファイルを記録できますが、違いは

  • 再帰モード、統合差分を使用し、新規/削除されたファイルをデフォルトで処理します ( diff -ruN)

  • 相違点を見つけるためのさまざまなアルゴリズムをサポート

  • バイナリデータをASCIIとしてエンコードするgitバイナリパッチをサポートします

関連情報