如何列出Git索引中的所有文件而不在文件末尾添加换行符

时间:2014-12-23 17:01:23

标签: git bash awk

我有一个合并工具,遗憾的是删除了文件末尾的换行符。所以在我使用这个工具后,我需要检查Git索引中的任何文件是否删除了它们的尾随换行符。

git diff --cached显示这些尾随的换行符,但它也会打印完整的差异。我想得到一个更简洁的视图,它只列出Git索引中缺少尾随换行符的已更改文件的文件名。

我尝试将git diff --name-onlygit grep结合起来,但我找不到正则表达式来检测文件末尾没有换行符的文件。即使使用扩展正则表达式(\Z),git grep似乎也无法识别包含-E的表达式。

1 个答案:

答案 0 :(得分:0)

this related question的答案与一些Bash魔法结合起来最终让我得到了这个解决方案:

for file in $(git diff --cached --name-only); do test $(tail -c 1 $file) && echo $file; done