2

私はいくつかのコードを再編成しており、プログラムを使用して、差分が追加と削除の一致するペアのみで構成されていることを確認したいと思います。私はソース管理としてgitを使用しているので、うまくいけば、これを行うことができるgitに組み込まれているものがありますか?また、出現または消失した行を要約できれば非常に便利です。


そのようなツールがあるかどうか誰かが知っていますか?

4

4 に答える 4

1

それは確かに便利な機能ですが、そのようなツールに気づいていません。Windowsでは、行検出を移動したWinMergeを使用できます。それ以外の場合は、この関連する質問 が役立つ場合があります。

于 2011-11-25T18:51:37.623 に答える
1

prusswanが言うように、私は現在ツールが存在するとは思わない。ただし、gitは名前の変更を検出できるため、ファイルへの変更を検出するのは難しくありません。-Mオプションは、単にdelete / add diffを実行するのではなく、名前変更を検出するためのgitでもあります。

git diff -M 18b5850a07bb
diff --git a/G b/G
index e69de29..d0a432b 100644
--- a/G
+++ b/G
@@ -0,0 +1 @@
+This is a change
diff --git a/A b/H
similarity index 100%
rename from A
rename to H
diff --git a/B b/I
similarity index 100%
rename from B
rename to I
diff --git a/C b/J
similarity index 100%
rename from C
rename to J
diff --git a/D b/K
similarity index 100%
rename from D
rename to K
diff --git a/E b/L
similarity index 100%
rename from E
rename to L
diff --git a/F b/M
similarity index 100%
rename from F
rename to M
于 2011-11-25T19:06:04.500 に答える
1

あなたはあなたが扱っていたコンピュータ言語を言いませんでした。

SmartDifferencerファミリーのツールが役立つ可能性があります。これらのツールは、プログラミング言語の構文を比較して、行編集アクションではなく、プログラマーアクション(コピー、移動、ブロック内の識別子の名前変更)によって説明できる用語の違いを判別します。

ファイルの編集が実際にはプログラミング構造全体の単なる動きである場合、SmartDifferencerはおそらくそれを正確に教えてくれます。

于 2011-11-26T18:24:52.980 に答える
1

別のアプローチは、Git 2.14.x / 2.15(2017年第3四半期)で可能な視覚的なアプローチです。「 」は、他の場所で削除された行と同じ新しい行を、真に新しい行とは異なる方法でペイントgit diffするようにオプションで教えられているためです。

言い換えれば、移動した線の専用色

commit 61e89ea、commit 86b452ecommit 176841fcommit 2e2d5accommit e6e045fcommit 146fdb0 、commit 30b7e1ecommit bd03329commit 0911c47 、commit 4eed0ebcommit f359713 commit 5af6ea9commit4acaaaを参照してくださいff95867コミット091f8e2コミットb9cbfdeコミット68abc6f(2017年6月30日)Stefan Beller(stefanbeller( Junio C Hamano
によってマージされました---コミットb6c4058 、20178月27日)gitster

git configドキュメントには次のものが含まれています。

diff.colorMoved

有効な<mode>値または真の値のいずれかに設定されている場合、差分内の移動された線の色は異なります。有効なモードの詳細については、の' --color-moved'をgit-diff参照してください。
単にに設定するtrueと、デフォルトのカラーモードが使用されます。
に設定するとfalse、移動した線は色付けされません。

詳細については、commit2e2d5acを参照してください。

于 2017-09-04T19:47:49.517 に答える