我想在他们自己的提交中提交我的所有空白更正,以保持其他一切不受空白更改的影响。
使用类似这样的内容轻松过滤 out 与git diff
的空白差异
git diff --ignore-all-space --ignore-space-change --ignore-space-at-eol --ignore-blank-lines
但是如何获得仅空白区别的列表?
(获取仅具有空格差异的文件列表也很有用,因此我可以add
将它们全部git add -p
,而无需通过{{1}}来查看它们挑选出空白差异。但我认为这是次要的。)
答案 0 :(得分:4)
这是你可以做到的一种方式:
git reset --hard
)使用Whitespace Total Fixer清除所有空白错误。有修复或忽略各种问题的选项,但默认可能没问题:
find . -name "*.whatever_extension_you_need" -exec wtf.py -v -i {} \;
git diff
现在只会显示空白变化
(FWIW,我写了wtf.py
;我很抱歉,如果它看起来像是无耻的自我推销,但我确实专门针对这样的情况编写了这样的情况,其中存储库反复被白色空间问题污染搞砸了你的提交。)
您还可以使用wtf.py
来检查以查找空白错误,而不是就地修复它们;这不会影响您的文件,但它会向stderr打印一条(希望是有帮助的)有关其发现的问题的消息。
> find . -name "*.whatever_extension_you_need" -exec wtf.py -v {} \; > /dev/null
nightmare.txt LINE 8: WARNING: spaces followed by tabs in whitespace at beginning of line
nightmare.txt:
CHOPPED 1 lines with trailing space
CHOPPED 0 blank lines at EOF
ADDED newline at EOF
CHANGED 1 line endings which didn't match crlf from first line
WARNED ABOUT 1 lines with tabs/spaces mix
答案 1 :(得分:0)
您可以将 non 空格差异临时应用于原始副本或副本。然后您可以在还原之前使用diff或git diff进行比较。
在存储库中,可以完全根据您的差异来执行类似于Add only non-whitespace changes中的建议的操作。像这样:
git diff -U0 -w -b --ignore-blank-lines --no-color | git apply --ignore-whitespace --unidiff-zero -
git diff
当我想对非git文件和process substitutions进行此操作时,我使用了一个小的script来编写,对临时文件执行相同的操作。