私はgitdiffの出力形式が本当に好きで、任意の非git関連ファイルを比較するためにgit diff --no-index
としてよく使用します。しかし、-no-indexを使用するときに私が知る限り、提供できるファイルのペアは1つだけです。次のように、複数のペアを渡すことができるようにしたいと思います。
git diff --no-index a.new a.old b.new b.old
そして、リポジトリでgit diff
を実行することで得られるような出力を取得します。
diff --git a/a b/a
index e965047..ce01362 100644
--- a/a
+++ b/a
@@ -1 +1 @@
-Hello
+hello
diff --git a/b b/b
index 2b60207..dd7e1c6 100644
--- a/b
+++ b/b
@@ -1 +1 @@
-Goodbye
+goodbye
Git diffまたは同様のツールでこれを行う方法はありますか?
git diff --no-index
は2つのディレクトリも受け入れ、これらを比較します。ファイルを2つの一時ディレクトリにコピーして、いつでもその周りにラッパースクリプトを記述できます。
それ以外に、比較するファイルの複数のペアを受け入れるdiffツールを知りません。 diff
でさえ、ファイルの1つのペア、またはディレクトリとファイルのリストのみを受け入れます。
これは基本的に2つのコンテキスト依存バージョン Jaapの回答 であり、それぞれにボーナスがあります。
git diff --no-index
を実行する前に、Git構成で diff.colorMoved
を設定することをお勧めします。または、グローバルに設定する代わりに、--color-moved
オプションを含めることができます。
diff.colorMoved
設定では、ある場所から削除された線が差分の他の場所に表示される場合、異なる線の色が使用されます...ファイル内で移動したか、リファクタリングのように別のファイルに移動したかは関係ありません。
ディレクトリcurrent-version
に、他のファイルと比較したいファイルがいくつかあります。 new-version
で比較するファイルのセットの内容がほぼ同じである場合は、Jaapの提案を使用してください。
git diff --no-index current-version/ new-version/
一方のバージョンにほんの一握りのファイルがあり、もう一方のバージョンにたくさんのファイルがある場合、そのように、
┌ current-project
| ├ (various folders)
| └ src
| ├ (various files)
| ├ foo.c
| └ bar.c
└ proposed-replacements
├ new-foo.c
└ new-bar.c
... Gitの名前変更検出に機能を任せることができます。どのバージョンのGitが、これを行うために必要な名前変更追跡の程度を追加するのかわかりません(私はv2.18を使用しています)。また、私が行ったテストは、非常に些細なファイルのセットで行われました。
proposed-replacements
でファイルの大部分が「欠落」していることを実際に確認したくはありません。また、proposed-replacements
'ファイルにcurrent-project
に表示されるのと同じ名前/パスをわざわざ与えたくないので、それらを元の場所に残し、名前の変更と変更のみを含むフィルターに入れます。ファイル。
git diff --no-index --diff-filter=RM current-project/ proposed-replacements/
diff --git a/current-project/src/foo.c b/proposed-replacements/new-foo.c
similarity index 65%
rename from current-project/src/foo.c
rename to proposed-replacements/new-foo.c
index dd51990..64445b1 100644
--- a/current-project/src/foo.c
+++ b/proposed-replacements/new-foo.c
@@ -1,4 +1,4 @@
octopus
cow
-dog
tiger
+flamingo
diff --git a/current-project/src/bar.c b/proposed-replacements/new-bar.c
similarity index 87%
rename from current-project/src/bar.c
rename to proposed-replacements/new-bar.c
...