美文网首页
git文件格式管理

git文件格式管理

作者: 狗狗胖妞 | 来源:发表于2019-06-04 10:39 被阅读0次

    关于linux跟windows文件格式的问题

    在windows下创建的文件跟linux下创建的文件格式是不一样的

    cat -A test查看,若每行后面有^M$,则代表是Windows下创建的文件,若每行后面是$,则是linux下创建的

    Windows下的换行符是\r\n
    linux下是\n,所以多出来的\r会造成多了一个特殊字符,从而造成文件不能正常读取使用。去除\r的方法是:

    cat text | tr -d "\r" > text1    //然后再用text1替换text即可
    

    CRLF和LF在跨平台工作的时候带来的烦恼及解决办法

    参考文档: https://www.jianshu.com/p/dd7464cf32b5

    1. CRLF LF CR 都是什么意思:
    • CRLF: 是carriagereturnlinefeed的缩写。中文意思是回车换行。
    • LF: 是line feed的缩写,中文意思是换行。
    • CR: 是carriagereturn的缩写。中文意思是回车。

    早期的mac系统使用CR当做换行,现在也已经统一成了LF
    Unix(包含现在大量使用的linux)系统使用LF
    windows系统使用LFCR当做换行(自作聪明的兼容性??)

    也正是因为不同系统的分歧,在多人协作共同开发的时候,可能导致提交代码时候产生问题。

    2. 跨平台合作时候的解决方式

    core.autocrlf配置说明
    git为了防止以上问题扰乱跨平台合作开发,使用命令可以转化LF和CRLF

    git config --global core.autocrlf true
    Git可以在你push时自动地把行结束符CRLF转换成LF,而在pull代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF

    git config --global core.autocrlf input
    把core.autocrlf设置成input来告诉 Git 在push时把CRLF转换成LF,pull时不转换
    我现在在git上使用此设置,因为我从windows上拉下来的文件和代码会再上传到linux服务器上,如果格式为CRLF会在linux服务器上运行发生错误

    git config --global core.autocrlf false
    在本地和代码库中都保留CRLF,无论pull还是push都不变,代码库什么样,本地还是什么样子

    延伸:vim中查看文件格式和编码

    查看文件格式和编码
    :set fileformat? #查看文件格式
    :set fileencoding #查看文件编码

    设置文件格式或编码
    :set fileformat=unix
    :set fileencoding=utf-8 #设置文件编码为utf-8

    相关文章

      网友评论

          本文标题:git文件格式管理

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