有没有办法用git diff显示*只*空白差异?

ico*_*ast 9 git whitespace

我想在他们自己的提交中提交我的所有空白更正,以保持其他一切纯净的空白更改.

使用类似的东西很容易过滤空白差异git diff

git diff --ignore-all-space --ignore-space-change --ignore-space-at-eol --ignore-blank-lines
Run Code Online (Sandbox Code Playgroud)

但是如何获得只有空格差异的列表?

(得到一个只有空格差异的文件列表也很有用,所以我可以add把它们全部都git add -p解决掉,看看空白区别.但我想这是次要的.)

Dan*_*ski 4

这是您可以做到的一种方法:

  • 从一个干净的工作目录开始(例如git reset --hard

  • 使用Whitespace Total Fixer清除所有空白错误。有多种选项可以修复或忽略各种问题,但默认设置可能就可以:

      find . -name "*.whatever_extension_you_need" -exec wtf -v -i {} \;
    
    Run Code Online (Sandbox Code Playgroud)
  • git diff现在将仅显示空白更改

  • 暂存并提交仅包含空白的更改。

(FWIW,我写道wtf;如果这看起来像是无耻的自我推销,我很抱歉,但我确实是专门针对像这样的情况编写的,在这种情况下,存储库反复受到空白问题的污染,从而使您的提交变得混乱。)

您还可以用来wtf简单地检查空格错误,而不是就地修复它们;这不会影响您的文件,但它会向 stderr 打印一条有关它发现的问题的消息(希望有帮助)。

  find . -name "*.whatever_extension_you_need" -exec wtf -v -i {} \;
Run Code Online (Sandbox Code Playgroud)

  • 在我看来,无耻的自我推销并没有什么错!感谢您写下它并感谢您的回答。当我有机会时我会测试它。 (3认同)