git 确保每个文件末尾有换行符

标签 git newline

git 不喜欢不以换行符结尾的文件(例如,请参阅 this question)。假设我想清理我的存储库并确保每个文件以换行符正确结束(不添加无用的换行符),是否有某种工具或命令可以帮助我做到这一点?

最佳答案

for f in $(git grep --cached -Il ''); do tail -c1 $f | read -r _ || echo >> $f; done

说明

  • git grep --cached -Il '' 列出 git 索引 ( link ) 中的所有文本文件
  • tail -c1 读取最后一个字符
  • read 内置函数如果在找到 \n 之前检测到 EOF,则以非零值退出
  • echo >> $f 仅在读取命令失败时执行

ps:灵感来自https://backreference.org/2010/05/23/sanitizing-files-with-no-trailing-newline/

关于git 确保每个文件末尾有换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57770972/

相关文章:

没有经验的成员的 Git 工作流程

c# - 为什么 StringBuilder.AppendLine 不添加带有某些字符串的新行?

java - 如何使用 BufferedReader 读取 CR LF 行?

python - 当我看到特殊的 eol 字符时,如何使用 Python 识别它?

c++ - 确定平台的行分隔符的可移植方法

bash - 为什么 sudo -s 'printf "xx"' 无法处理换行符?

gitignore 不工作-想忽略除 gitignore 文件以外的所有内容以保留 'empty' 目录

git - 我可以在 git 中合成一个跳过单个更改集的分支吗

git stash 应用版本

Git revert 导致 merge 冲突