背景:
使用虚拟机共享windows文件夹,文件夹中用git clone 一个仓库。在linux下编辑文件,用git status发现几乎所有的文件都为修改状态。
 
原因:
windows下和linux下的文本文件的换行符不一致。
windows:两个字符,CR+LF,即一个回车,一个换行
linux及OS X:一个字符,LF,在Linux下查看文件如下所示,多了个^M

思考:
仓库中是Linux下提交的代码,那么应该是LF结尾的,那么windows下clone下来的应该也是LF结尾才对。那么是什么导致windows下变为CRLF格式结尾呢?
答:是因为git的一个设置导致的。core.autocrlf。
在windows下,git安装时,默认该选项为true,那么效果是从仓库下载下来,结尾会改为CRLF格式。当提交文件到仓库时,会将CRLF格式转为LF。那么是可以保证仓库中的文件是LF结尾的。这样Linux下编辑和windows下编辑都不影响了。
 
结论:
也就是说,我用不同的git设置,操作了同一个文件夹,那么表现肯定就不一样了。
windows下面设置该项为true到底好不好,好像是方便了windows开发者,但这种同一个文件夹如果拷贝到Linux系统或者苹果下面去,就会有问题了。
 
最佳实践:
现在主流编辑器都能够自动识别换行符为LF还是CRLF,如VS code,Notepad++等等。
个人认为windows下开发将编辑器默认设置为LF格式,git 该项设置为false是最好了。

如VSCode,在settings中设置file:eol 选项为\n
 

参考链接:

git设置core.autocrlf的更多相关文章

  1. git core.autocrlf配置 解决Windows和Linux(Mac)换行问题

    格式化 格式化是许多开发人员在协作时,特别是在跨平台情况下,遇到的令人头疼的细小问题. 由于编辑器的不同或者Windows程序员在跨平台项目中的文件行尾加入了回车换行符, 一些细微的空格变化会不经意地 ...

  2. git core.autocrlf配置说明

    格式化 格式化是许多开发人员在协作时,特别是在跨平台情况下,遇到的令人头疼的细小问题. 由于编辑器的不同或者Windows程序员在跨平台项目中的文件行尾加入了回车换行符, 一些细微的空格变化会不经意地 ...

  3. git config --global core.autocrlf false

    git config --global core.autocrlf  false warning: LF will be replaced by CRLF in .idea/vcs.xml.The f ...

  4. Git中的core.autocrlf选项

    项目的开发环境为Windows,在Linux环境下编译,使用Git进行版本控制. 在安装好Git和TortoiseGit后,从远端clone,遇到一个奇怪的问题,Shell脚本中的LF总是被替换成了C ...

  5. Git中的AutoCRLF与SafeCRLF换行符问题

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

  6. git 设置

    系统乱码 项目中的编码统一设置为UTF-8编码. 设置系统的语言设置为 zh_UTF-8,把 export LANG=zh_CN.UTF-8 保存到~/.profile文件里. $ env|grep ...

  7. Windows下git设置代理服务器

    SVN中,使用TortoiseSVN来进行版本控制时,设置代理非常简单,只需要在设置里面添加代理的信息即可.而 git 在GUI(v0.17.GITGUI)中却无法找到类似的设置,只能求助 git b ...

  8. git 设置多项目实现多账号登陆

    9:45 2015/11/18git 设置多项目时实现多账号用户登陆git config --global user.name "your_name" git config --g ...

  9. 设置core环境

    void dummy_function (void){ unsigned char *ptr = 0x00; *ptr = 0x00;} int main (void){ dummy_function ...

随机推荐

  1. sublime 3插件安装记录

    安装sublime 3的package control管理器: 从菜单 View - Show Console 或者 ctrl + ~ 快捷键,调出 console.将以下 Python 代码粘贴进去 ...

  2. javascript总结39: 元素获取的常见问题

    1 定义id属性的元素,不获取直接使用 由于id名具有唯一性,部分浏览器支持直接使用id名访问元素,但不是标准方式,生产环境下不推荐使用. 2 元素是对象 获取到的元素是DOM对象 ,DOM对象也有数 ...

  3. C# 操作计算机用户权限

    我们可以用代码来获取当前登录用户的权限信息,    用户角色类型有以下几种: // 摘要:    //     指定与 System.Security.Principal.WindowsPrincip ...

  4. 编写高质量代码改善C#程序的157个建议——建议146:只对外公布必要的操作

    建议146:只对外公布必要的操作 那些没有必要公开的方法和属性要声明成private.如果需要公开的方法和属性超过9个,在VS默认的设置下,就需要滚屏才能显示在Intellisense中,如图: Sa ...

  5. 【转载】C#操作XML

    这个网上一大把,对XML操作先转载,以后研究一下 C#读取XML时候如何获取最好的性能. Fash Li 的XML读取写的非常的清晰,这里直接转载了,多谢各位博友的无私分享,能让大家有更多的时间研究未 ...

  6. docker中安装Jenkins

    1.获取Jenkins镜像(不要直接docker pull jenkin,这样获取的不是最新的版本,后续安装部分插件会不成功) docker pull jenkins/jenkins 创建文件夹 su ...

  7. Web.config配置文件详解(新手必看) (转载)

    原文地址:http://www.cnblogs.com/gaoweipeng/archive/2009/05/17/1458762.html <?xmlversion="1.0&quo ...

  8. Window 服务启动出错 14001

    在安装windows服务时,没有异常情况,但是在启动的过程中出现 14001错误. 错误 14001 应用程序无法启动 因为应用程序的并行配置不正确 有关详细信息 请参阅应用程序事件日志 或使用命令行 ...

  9. 用Docker自动构建纸壳CMS

    纸壳CMS可以运行在Docker上,接下来看看如何自动构建纸壳CMS的Docker Image.我们希望的是在代码提交到GitHub以后,容器镜像服务可以自动构建Docker Image,构建好以后, ...

  10. LA 3401

    彩色立方体. [分析] 弄清楚24种状态,可以由标准姿态旋转而来. 计算24种状态: #include <iostream> #include <string> ,,,,, } ...