我经常使用一些制表符而不是空格来推送代码,反之亦然,或者插入换行符以提高代码的可读性。我如何告诉 git 不要寻找这些更改?
3 回答
我找不到本地 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 中配置空白设置可能是一个更干净的解决方案。
这应该可以解决问题:
git diff -w | git apply --cached --ignore-whitespace
补丁将与添加一起应用,而无需更改空白。
在您的工作区中查找非白色更改时,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 所述)将永远不会被忽略,因为它实际上是用两行新行替换一行文本。