我经常使用某些标签而不是空格来推送代码,反之亦然,或者插入换行符以提高代码的可读性。我如何告诉git不要寻找这些变化?
答案 0 :(得分:12)
我找不到使用git status
识别真正更改内容的本机git解决方案,但以下单行程在linux下运行良好:
for m in $(git status | grep modified| awk '{print $2}');do test -z "$(git diff -w $m)" || echo $m;done
结果将是一个修改文件列表,不包括只有空格更改的文件。
当您只想查看具有实际编辑的文件时,这在写入提交消息之前特别有用,这在Windows和Linux系统之间来回移动时经常会出现问题。如果您可以控制两个系统,那么在git中配置空格设置可能是一个更清晰的解决方案。
答案 1 :(得分:7)
这应该可以解决问题:
git diff -w | git apply --cached --ignore-whitespace
修补程序将在不添加空格的情况下应用添加。
答案 2 :(得分: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
不幸的是,将其与例如-w
仅查看包含非白色更改的文件不起作用(至少在我当前的git版本2.15中无效)
所以我想实现后者的方法是使用普通的git diff -w命令,然后提取文件名:
git diff -w |grep "^--- a"
这是利用git diff引入特定文件差异输出的方式,并且比此页面上建议的其他单行脚本要简单一些。
一个警告:AFAIK在文本中间插入换行符 (例如,如OP所述,以提高代码的可读性)将永远不会被忽略,因为它可以有效地替换一行文本两行。