美文网首页
GitHub 第一坑:换行符自动转换

GitHub 第一坑:换行符自动转换

作者: 沈杰3 | 来源:发表于2017-09-22 18:58 被阅读0次

    转载: @换行符自动转换

    问题描述

    多平台共同开发时,使用的gitlab托管代码,Clone或者Pull下来的代码存在换行符问题,导致脚本使用无法在cygwin运行。

    总结:

    1. 换行符:
    • UNIX/Linux : LF (0x0A),'\n'
    • Mac OS : LF (0x0A),之前是CR (0x0D)。
    • DOS/Windows: CRLF(0x0D0A) '\r\n'

    查看方式:使用 Notepad++打开文件,点击小图标“显示所有字符”

    CR用符号'\r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D;
    LF使用'\n'符号表示, ASCII代码是10, 十六制为0x0A. 所以Windows平台上换行在文本文件中是使用 0d 0a 两个字节表示, 而UNIX和苹果平台上换行则是使用0a或0d一个字节表示

    QQ图片20170922154346.png QQ图片20170922154726.png
    1. git智能转换
    • 自动模式
    • 当你在签出文件时,它试图将 UNIX 换行符(LF)替换为 Windows 的换行符(CRLF);当你在提交文件时,它又试图将 CRLF 替换为 LF。保持仓库内文件的一致性(UNIX 风格)
    1. 问题发生:
      在windows环境下,当Clone或Pull下来的代码,自动将文件换行符改成了CRLF,包括SHELL脚本,但是我们项目中是使用cygwin运行脚本的,这会导致换行符问题:
    QQ截图20170922183813.png

    打开build.sh,发现所有的换行符都是CRLF;

    解决问题

    1. 修改GIT配置
    • GIT 命令:


      QQ截图20170922184311.png

    先设置不自动转换,
    再添加换行符检查功能,在提交代码时,当发现混用时,就不提交代码

    • 如果使用的TortoiseGit的话,可以这样设置:
    QQ截图20170922184927.png
    1. 当在提交代码时,出现混用的话,可以将文件改成unix形式,使用命令dos2Unix命令:
      测试:在windows下创建一个文件,使用dos2Unix转换:
    QQ截图20170922185452.png

    转换后:

    QQ截图20170922185609.png

    已经将CRLF变成LF

    相关文章

      网友评论

          本文标题:GitHub 第一坑:换行符自动转换

          本文链接:https://www.haomeiwen.com/subject/kxsfextx.html