git在window与linux的换行符问题

1:背景。我win7,后端是win10,使用了TortoiseGit工具。我使用ssh,他使用http。仓库是在linux,使用gitLab管理

2:问题。仓库是总监之前建好的。后端把文件add后push,我clone本地后没有放进编辑器中也没有做任何的修改,马上commit,提示所有文件已修改,打开对比了,只是结尾的换行有修改

3:差异。因为之前没有遇到过这样的问题,不知从何下手,刚开始以为是编码问题,百度谷歌后不知所以然,就从编码到git版本用排除法一一对比,最后发现我们2个人的连接方式不一致。统一了链接方式后,问题不存在了,但是这不是解决问题的根本性办法,一开始以为是这个问题导致的,其实并不是,只是瞎猫碰上死耗子,其实是其中一个终端重新安装了git使用了一样的autocrlf

4:总结。这个问题是git在window与linux的换行符问题,autocrlf在window和linux下不一样。假如不同的终端提交时候使用了不同的换行符,就会出现这个问题

5:解决。

  a、安装时候,大家的选项大多是默认安装,所以在autocrlf选项时候,一般也是默认的。

  

  但是,在多人协同开发时候,不同终端不同git的配置不一样,会导致2的问题

  

  安装时候可以选择这个,checkout不修改文件换行符,commit不修改文件换行符  

  b、假如已经出现2问题。

    如果你的源文件中是换行符是LF,而autocrlf=true, 此时git add就会遇到 fatal: LF would be replaced by CRLF 的错误。有两个解决办法:

    1. 将你的源文件中的LF转为CRLF即可【推荐】

    2. 将autocrlf 设置为 false

    如果你的源文件中是换行符是CRLF,而autocrlf=input,  此时git add也会遇到 fatal: CRLF would be replaced by LF 的错误。有两个解决办法:

    1. 将你源文件中的CRLF转为LF【推荐】

    2. 将autocrlf 设置为true 或者 false

    在Mac上设置 autocrlf = input, 在Windows上设置autocrlf = true(默认值)。

时间: 2024-10-15 20:47:46

git在window与linux的换行符问题的相关文章

Git中的AutoCRLF与SafeCRLF换行符问题

最近在使用GitHub,发现不时没有修改过的文件要提交,对比发现文件全部修改,但找不到不一样的地方.想可能是换行符的问题,因为Windows和Linux的换行符不一样,而Git默认应该是Linux的,今天Bing了下,果然是这个问题. CR回车 LF换行Windows/Dos CRLF \r\n Linux/Unix LF \n MacOS CR \r 解决方法是:打开命令行,进行设置,如果你是在Windows下开发,建议设置autocrlf为true.2014/08/20 补充:如果你文件编码

windows和linux中换行符的转换

数据开发平台使用上传脚本报错:保存失败,文件编码格式不正确,请修改文件换行符为Unix终束符! 修改方式:DOS系统下,使用文本编译器另存为,然后选择换行符为unix终束符. 解释: windows 文件的换行符为:[CR][LF] Linux和Unix文件的换行符为:[LF] 有些需要转换使用,如修改或替换安卓andriod的hosts文件,需要保证换行符为Unix形式才能使用. 其中一种办法是在linux系统中重新保存一份文件: 但是:如何在windows系统中,转换成Unix / Linu

linux 删除换行符

今天需要删除文件里面的换行符,比如有一个文件a.txt: 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1.使用vim删除换行符 vim输入命令:%s/\n//g 2.使用sed命令,例如 sed ':t;N;s/\n//;b t' a.txt 结果:1,2,34,5,61,2,34,5,61,2,34,5,61,2,34,5,61,2,34,5,6 解释一下: :t 定义label "t" b t 转到labe

Linux删除换行符-

场景:使用nmap结合for循环对文本内的ip进行检测时,发现每行ip后面有个\r的换行符影响shell脚本执行 解决方案:使用vim编辑器做替换: 使用 vim -v file    //打开文件  执行下面的替换命令 :%s/\r// 处理后再次打开如下: 原文地址:http://blog.51cto.com/1inux/2106514

php过滤textarea 中的换行符问题

之前我写的替换代码是这样的 $content = str_replace('\r\n', '', $_POST['content']); 为了确保window和Linux的换行符都能去掉,改成这样的: $content = str_replace('\r', '', $content); $content = str_replace('\n', '', $content); 运行的时候发现还是有问题,换行符没有被替换,然后开始百度textarea的换行符,和str_replace的用法,最后发现

Linux中的换行符

说明:本文仅供学习交流,转载请标明出处,欢迎转载! 将windows下编写的一个txt文件在Linux下打开的时候发现每行行末都会多出^M,而将Linux编写的一个txt文件在windows下打开时发现所有的内容都在一行显示,原本在Linux下是分了行的,为什么会出现这种现象呢?其实这与windows和Linux对换行符的标志不一样而已. 在介绍两者系统的换行符之前,先介绍下回车与换行的概念. 回车:CR,在文本中显示为^M,在字符串中对应为'\r',r表示return: 换行:LF,在文本中显

Linux换行符相关

Linux和windows中的换行符差异问题LINUX的换行符在Windows记事本打开不换行或出现黑点是由于Linux和windows中的换行符差异问题造成的. Unix系统里,每行结尾只有“<换行>”,即“\n”:Windows系统里面,每行结尾是“ <回车><换行>”,即“\r\n”:Mac系统里,每行结尾是“<回车>”.一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行:而Windows里的文件在Unix/Ma

小小换行符乱谈(文本文件vs二进制文件)

使用 C 语言的 fopen 打开文件时,可以指定的 mode 有 12 个,其中 6 个包含  "b" 使用 C++ 的 fstream 打开文件时,可用的模式组合有 24 个(?),其中 12 个包含  "binary" 使用 python 的 open 打开文件,除了可以使用 C 中的 12 个模式外,还可以使用  "U" 或 "rU" 使用 Qt 库的 QFile 打开文件时,可以指定  QIODevice::Text

C# 中几种换行符

1.Windows 中的换行符"\r\n" 2.Unix/Linux 平台换行符是 "\n". 3.MessageBox.Show() 的换行符为 "\n" 4.Console 的换行符为 "\n" 换行符还因平台差异而不同. 为保持平台的通用性,可以用系统默认换行符 System.Environment.NewLine.