'diff' (または他のもの) を使用してテキストファイル間の文字レベルの差分を取得する 質問する

'diff' (または他のもの) を使用してテキストファイル間の文字レベルの差分を取得する 質問する

'diff' を使用して、行間の差異と文字間の差異の両方を取得したいと思います。たとえば、次のようになります。

ファイル 1

abcde
abc
abcccd

ファイル2

abcde
ab
abccc

使用差分 -u次のような結果になります:

@@ -1,3 +1,3 @@
 abcde
-abc
-abcccd
\ No newline at end of file
+ab
+abccc
\ No newline at end of file

ただし、これらの行に変更があったことだけが表示されます。私が見たいのは次のようなものです。

@@ -1,3 +1,3 @@
 abcde
-ab<ins>c</ins>
-abccc<ins>d</ins>
\ No newline at end of file
+ab
+abccc
\ No newline at end of file

私の言いたいことはお分かりでしょう。

今、私は使えることを知っていますその他のエンジン特定の行の差異をマーク/チェックします。しかし、私はすべてを実行する 1 つのツールを使用することを好みます。

ベストアンサー1

Gitには単語の差分があり、すべての文字を単語として定義すると、文字の差分が得られます。ただし、改行の変更は無視された

次のようなリポジトリを作成します。

mkdir chardifftest
cd chardifftest
git init
echo -e 'foobarbaz\ncatdog\nfox' > file
git add -A; git commit -m 1
echo -e 'fuobArbas\ncat\ndogfox' > file
git add -A; git commit -m 2

さあ、実行してみgit diff --word-diff=color --word-diff-regex=. master^ masterましょう。次のようになります:

git 差分

文字レベルでは追加と削除の両方が認識されるのに対し、改行の追加と削除は無視されることに注意してください。

次のいずれかを試してみるのもよいでしょう:

git diff --word-diff=plain --word-diff-regex=. master^ master
git diff --word-diff=porcelain --word-diff-regex=. master^ master

おすすめ記事