16

我经常使用一些制表符而不是空格来推送代码,反之亦然,或者插入换行符以提高代码的可读性。我如何告诉 git 不要寻找这些更改?

4

3 回答 3

14

我找不到本地 git 解决方案来识别真正改变的内容,git status但以下单行代码在 linux 下运行良好:

for m in $(git status | grep modified| awk '{print $2}');do test -z "$(git diff -w $m)" || echo $m;done

结果将是已修改文件的列表,不包括仅具有空白更改的文件。

当您只想查看具有实际编辑的文件时,这在编写提交消息之前特别有用,这在 windows 和 linux 系统之间来回移动时通常是一个问题。如果您可以控制这两个系统,那么在 git 中配置空白设置可能是一个更干净的解决方案。

于 2014-09-25T09:38:25.117 回答
8

这应该可以解决问题:

git diff -w | git apply --cached --ignore-whitespace

补丁将与添加一起应用,而无需更改空白。

于 2013-10-19T16:02:32.507 回答
0

在您的工作区中查找非白色更改时,git diff真的是您的朋友(与“git status”相对)。git diff 有几个选项来定制这个,其中一些是

--ignore-space-at-eol
--ignore-space-change / -b
--ignore-all-space / -w

如果您对类似 git status 的已更改文件列表感兴趣,可以发出

git diff --name-only

不幸的是,将其与 eg 结合-w以仅查看包含非白色更改的文件不起作用(至少在我当前版本的 git 2.15 中不起作用)

所以我想出实现后者的方法是使用普通的 git diff -w 命令,然后提取文件名:

git diff -w |grep "^--- a"

这是利用 git diff 引入特定文件差异输出的方式,并且比人们在此页面上建议的其他单行脚本简单一点。

一个警告:AFAIK在文本中间插入换行符(例如,为了提高代码可读性,如 OP 所述)将永远不会被忽略,因为它实际上是用两行新行替换一行文本。

于 2019-05-30T10:59:35.493 回答