zoukankan      html  css  js  c++  java
  • Git 换行符

    Windows 操作系统使用的 CRLF。

    Unix 的操作系统使用的 LF。

    Mac OS 起初使用的 CR,后来到了 Mac OS X 后,改成了使用 LF,与 Unix 系统保持一致。

    问题

    Windows 上 Git 在获取代码时,默认会自动把换行符由 LF 转为 CRLF,在提交时又把 CRLF 转为 LF。

    在一些情况下这样会出现问题。

    解决

    1.在项目中添加 .gitattributes 文件,与 .gitignore 方式类似

    https://git-scm.com/docs/gitattributes

    https://github.com/alexkaratarakis/gitattributes

    • 使用 * text=auto 可以定义开启全局的换行符转换
    • 使用 *.bat text eol=crlf 就可以保证 Windows 的批处理文件在 checkout 至工作区时,始终被转换为 CRLF 风格的换行符
    • 使用 *.sh text eol=lf 就可以保证 Bash 脚本无论在哪个平台上,只要被 checkout 至工作区,始终被保持 LF 风格的换行符
    • 使用 *.jpg -text 可以禁止 Git 将 jpg 文件识别为文本文件,从而避免由于换行符转换引入的数据损坏

    2.设置 Git(实际就是修改的用户目录下的 .gitconfig 文件)

    # 提交时转换为 LF,检出时转换为 CRLF
    git config --global core.autocrlf true
    # 提交时转换为 LF,检出时不转换
    git config --global core.autocrlf input
    # 提交检出均不转换
    git config --global core.autocrlf false
    
    # 拒绝提交包含混合换行符的文件
    git config --global core.safecrlf true
    # 允许提交包含混合换行符的文件
    git config --global core.safecrlf false
    # 提交包含混合换行符的文件时给出警告
    git config --global core.safecrlf warn
    
    # 设置行结束符的类型为 lf
    git config --global core.eol lf
    # 设置行结束符的类型为 crlf
    git config --global core.eol crlf
    # 设置行结束符的类型为 native, native 是指平台默认的行结束符。默认的类型是 native
    git config --global core.eol native
    
    git config --global core.filemode false

    开发仅在 Windows 上运行的项目,可以将 core.autocrlf 设置 false。

    换行符转换

    sudo apt-get install dos2unix
    # 当前目录及其子目录下所有文件换行符转由 CRLF 为 LF
    find ./ -type f -exec dos2unix {} +

    https://git-scm.com/book/zh/v2/自定义-Git-配置-Git

  • 相关阅读:
    java--volatile关键字
    java--线程异常处理器
    java--线程池
    Supervisor安装和使用
    网络协议--HTTP
    1.Nginx简介
    Nginx配置实战
    Redis面试题
    SpringBoot--集成swagger2
    缓存的优缺点
  • 原文地址:https://www.cnblogs.com/jhxxb/p/13237462.html
Copyright © 2011-2022 走看看