git - 如何在文件末尾没有换行符的情况下列出 Git 索引中的所有文件

标签 git bash awk

我有一个 merge 工具,不幸的是它删除了文件末尾的换行符。因此,在使用此工具后,我需要检查 Git 索引中的任何文件是否删除了尾随换行符。

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

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

最佳答案

结合 this related question 的答案借助一些 Bash 魔法,我最终找到了这个解决方案:

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

关于git - 如何在文件末尾没有换行符的情况下列出 Git 索引中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27624800/

相关文章:

git - 如何知道之前 checkout 的标签

git - 如何创建并与其他开发人员共享 git 分支?

linux - 在 linux 中比较 2 个数字时预期输出不会出现

bash - 为什么需要这个斜杠?

git 冲突 - 文件在 HEAD 中删除并在修订中修改

javascript - 鲍尔 "Git not in the PATH"错误

linux - 如何使用 ssh 通过提供静态文本来执行与键盘交互的操作

python - 将具有多个子选项的命令行选项传递给 python 脚本 -- shell 脚本

r - 使用 awk 或 sed 根据第 1、8 和 9 列值选择矩阵第一行

linux - 如何消除文件中 int 值之间的差距?