zoukankan      html  css  js  c++  java
  • **Git中的AutoCRLF与SafeCRLF换行符问题

    目前我的解决的方法是:
    windows上开发,提交到git(oschina的linux环境),在windows上用ftp(二进制传输,不做处理原样传输)上传
    部署到业务服务器上
    我觉得在windows下开发,再git到oschina,再ftp上传到linux服务器上,比较保险的方式是:git时不开启自动转换autocrlf,但开启safecrlf,  ftp用二进制





    最近在使用GitHub,发现不时没有修改过的文件要提交,对比发现文件全部修改,但找不到不一样的地方。
    想可能是换行符的问题,因为Windows和Linux的换行符不一样,而Git默认应该是Linux的,今天Bing了下,果然是这个问题。

    CR回车 LF换行Windows/Dos CRLF Linux/Unix LF MacOS CR
    解决方法是:打开命令行,进行设置,如果你是在Windows下开发,建议设置autocrlf为true。
    2014/08/20 补充:如果你文件编码是UTF8并且包含中文文字,那还是把autocrlf设置为false,并且把所有文件转换为Linux编码(即LF ),开启safecrlf检查。

    一、AutoCRLF
    #提交时转换为LF,检出时转换为CRLF
    git config --global core.autocrlf true   
    
    #提交时转换为LF,检出时不转换
    git config --global core.autocrlf input   
    
    #提交检出均不转换
    git config --global core.autocrlf false

    二、SafeCRLF

    #拒绝提交包含混合换行符的文件
    git config --global core.safecrlf true   
    
    #允许提交包含混合换行符的文件
    git config --global core.safecrlf false   
    
    #提交包含混合换行符的文件时给出警告
    git config --global core.safecrlf warn



     通过设置 core.autocrlf 来解决行结束符设置问题。



    解决不同平台下结束符差别导致的各种问题,需要通过设置  core.autocrlf 来搞定。两种可能遇到的提示信息: 
    warning: LF will be replaced by CRLF 
    fatal: CRLF would be replaced by LF
     
          假如你正在 Windows 上写程序,又或者你正在和其他人合作,他们在 Windows 上编程,而你却在其他系统上,在这些情况下,你可能会遇到行尾结束符问题。这是因为 Windows 使用回车和换行两个字符来结束一行,而 Mac 和 Linux 只使用换行一个字符。虽然这是小问题,但它会极大地扰乱跨平台协作。 

          Git 可以在你提交时,自动地把行结束符 CRLF 转换成 LF,而在签出代码时把 LF 转换成 CRLF 。用 core.autocrlf 来打开此项功能,如果是在Windows 系统上,把它设置成 true,这样当签出代码时,LF 会被转换成 CRLF: 
    1
    git config --global core.autocrlf true
          Linux 或 Mac 系统使用 LF 作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以 CRLF 为行结束符的文件不小心被引入时,你肯定想进行修正,把 core.autocrlf 设置成 input 来告诉 Git 在提交时把 CRLF 转换成 LF,签出时不转换:
    1
    git config --global core.autocrlf input

    参考上面的配置方法,你就可以在 Windows 系统上,签出文件时保留 CRLF,而在 Mac 和 Linux 系统上,包括仓库中,保留 LF 。

          如果你是 Windows 程序员,且正在开发仅运行在 Windows 上的项目,可以设置 false 取消此功能,把回车符记录在库中: 
    1
    git config --global core.autocrlf false
  • 相关阅读:
    js设计模式-工厂模式(XHR工厂)
    js设计模式-工厂模式(抽象工厂)
    javascript设计模式-工厂模式(简单工厂)
    转载【梦想天空(山边小溪)】Web 开发人员和设计师必读文章推荐【系列二十九】
    转载【H:JL】用大家的力量来总结一个目录(众人拾柴火焰高)
    javascript设计模式-单体模式
    javascript设计模式-掺元类
    javascript设计模式-继承
    开博第一天
    iOS开发 在某个视图控制器中 隐藏 状态栏
  • 原文地址:https://www.cnblogs.com/kenshinobiy/p/4972204.html
Copyright © 2011-2022 走看看