![`git diff` は `diff` と関係がありますか?](https://rvso.com/image/109224/%60git%20diff%60%20%E3%81%AF%20%60diff%60%20%E3%81%A8%E9%96%A2%E4%BF%82%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
git diff
に関係しているdiff
?
git diff
に基づいて実装されていますかdiff
?はコマンドライン構文
git diff
に似ているのdiff
? どちらか一方を学ぶと、もう一方の使用に大いに役立ちますか?出力ファイルは同じ形式になっていますか?
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バイナリパッチをサポートします