如何使 git diff 更准确地显示相同行的更改?

Ash*_*Ash 5 git diff

有时 git diff 会返回如下内容:

diff --git a/file.x b/file.x
index aaaaaaa..bbbbbbb 000000
--- a/file.x
+++ b/file.x

    for (int i = 0; i < 5; i++)
-   {
-       // code
-   }
-
-   // other code
-
-   for (int i = 0; i < 5; i++)
    {
        // more code
    }
Run Code Online (Sandbox Code Playgroud)

有什么方法可以强制 git 显示如下所示的差异,这更准确地代表了真正的变化?

diff --git a/file.x b/file.x
index aaaaaaa..bbbbbbb 000000
--- a/file.x
+++ b/file.x

-   for (int i = 0; i < 5; i++)
-   {
-       // code
-   }
-
-   // other code
-
    for (int i = 0; i < 5; i++)
    {
        // more code
    }
Run Code Online (Sandbox Code Playgroud)

上面的区别是for (...)diff 认为已删除的行位于两个不同的位置。我很欣赏这完全是装饰性的,我只是想知道。

编辑:我已经尝试过

git diff -W ab

正如 @Michael Durrant 所建议的,但这不会改变这种情况下的输出。