【问题标题】:git ensure newline at end of each filegit 确保每个文件末尾都有换行符
【发布时间】:2020-01-06 07:39:25
【问题描述】:

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

【问题讨论】:

    标签: git newline


    【解决方案1】:
    for f in $(git grep --cached -Il ''); do tail -c1 $f | read -r _ || echo >> $f; done
    

    解释

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

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

    【讨论】:

    • 这会破坏二进制文件吗?
    • @EncryptedWatermelon 非常好的评论。我将脚本更改为仅影响文本文件。
    猜你喜欢
    • 2016-10-14
    • 1970-01-01
    • 2019-01-28
    • 2014-07-18
    • 2014-10-08
    • 2013-11-29
    • 2015-09-06
    • 1970-01-01
    • 2013-04-28
    相关资源
    最近更新 更多