git在不同平台windows、linux、mac 上换行符的问题
0.01 不同平台上换行符的问题
1,不同平台对换行符的制定不同
windows <回车换行> (carriage return AND line feed) “\n\r” CRLF
Unix系统 <换行> (carriage return) “\n” CR
window unix mac 等平台,换行符的不同:
2,由于换行符的不同,在不同系统之间传递文件产生的问题
1,文本显示问题,windows 下的文件在linux 下会产生 ^M 符号,而 linux 下创建编辑的文件 在windows 下会显示成一行;(edit plus 等软件可以很好区分除外)
2,window 下写的shell脚本不能再linux下执行了(shell 解释器对用换行符作为一个命令的提交)
3,影响版本控制软件呢的检入检出,(git对于工作空间和版本库中换行符有转换控制)产生一些无用的文件差异(git diff),尤其在多人协作中,每个人设置的换行符模式不同。
3,有时产生莫名其妙的问题,如果找不到原因,应该怀疑下是不是换行符的问题;
3,不同平台换行符的转化
windows -> unix :
1,用unix 平台的命令工具:
1. cat a.txt | tr -d "^M" > b.txt
2. cat a.txt | sed 's/^M//g'
3. vim 中执行sed 命令替换 ( :^,$ s/^m//g ;or :s/\r//g; )
4. dos2unix 文件 (适用与对文件夹所有文件进行转化)
unix ->windows :
在window 平台适用 UltraEdit 和 EditPlus 等工具的 可以设置换行模式进行自动转化
或者在unix 平台中使用命令:
1. cat a.txt | sed 's/\n/\r\n/g'
2. unix2dos 文件 (适用与对文件夹所有文件进行转化)
4,在开发方面如何避免换行问题
1,ide 中像设置编码一样,强制在工程工作区间级别设置文件换行 为linux 风格(设置为linux 风格的主要原因是有利与使用git少出错,有洁癖的想法是 还能省\r 这一个字节的内容消耗,那个文件没有换行? 总体来看是个划算的做法:})
eclipse 中,Windows -> Preference -> General -> workspace:
idea 中 ,
1,File->Settings…(Ctrl+Alt+S)
2,Editor->Code Style 里面的Line separator(for new files): 选择Unix and OS X(\n)
2,gitbash 中设置默认检入检出换行符为linux(\n)风格:(为了团队更好的协作)
1,开启自动换行
[a@b]$ git config --global core.autocrlf true #签出时将换行符转换成CRLF,签入时转换回 LF。 git config --global core.autocrlf true
#签出时不转换换行符,签入时转换回 LF git config --global core.autocrlf input
#签出签入均不转换 git config --global core.autocrlf false
2,开启安全换行
[a@b]$ git config --global core.safecrlf true
解释:
如果你把换行符搞乱了,在一个文件中既包含windows风格的换行符也包含unix风格换行符,那么 safecrlf 就可以发挥作用了:
#拒绝提交包含混合换行符的文件 git config --global core.safecrlf true
#允许提交包含混合换行符的文件 git config --global core.safecrlf false
#提交包含混合换行符的文件时候给出警示 git config --global core.safecrlf warn
git在不同平台windows、linux、mac 上换行符的问题的更多相关文章
- 不同平台windows、linux、mac 上换行符的问题
http://blog.chinaunix.net/uid-26748613-id-3179595.html?page=2 https://blog.csdn.net/changruihe/artic ...
- 体验CoreCLR的stack unwinding特性在Linux/Mac上的初步实现
有了stack unwinding特性,才能在.NET程序中获取调用堆栈(call stack)信息,才能在异常时显示调用堆栈信息.这个特性之前只在Windows上有实现,Linux/Mac上的实现最 ...
- Linux- 关于windows和Linux和Mac的换行符
windows 的换行符为"\r\n" Linux的换行符为"\n" Mac的换行符为"\n\r",和Windows相反
- windows下回车与换行符
windows下回车与换行符 从键盘输入的数据一般是ASCII码,也就是文本文件,在送到计算机内存时,回车和换行符转换成一个换行符(也就是说回车和换行符在windows文本中是两个字符),再从内存中以 ...
- windows下sed回车换行符处理
windows下sed回车换行符处理如果用sed for windows对整个文件进行了编辑,编辑之后一般需要处理回车换行符:rem windows的回车换行符是\r\n,linux的是\n,所以要替 ...
- 让你的Windows/Linux玩上Switch!
1 前言 某天在Github上面看到了两个Switch的模拟器: yuzu Ryujinx 于是就想动手想尝试一下在Linux上面玩上Switch. 本文首先简单介绍一下两个模拟器,接着是两个模拟器的 ...
- IDA Pro Disassembler 6.8.15.413 (Windows, Linux, Mac)
IDA: What's new in 6.8 Highlights This is mainly a maintenance release, so our focus was on fixing b ...
- windows和liunx下换行符问题
区别 windows换行符是: \r\n liunx换行符是: \n 问题 程序处理的时候就会有问题,因为在Windows的文件多了一个\r 解决办法(转换文件格式) vim file :set fi ...
- Mysql跨平台(Windows,Linux,Mac)使用与安装
MySQL其实是一个跨平台的轻量级数据库,平时开发会用到很多.有写程序可能要跨平台开发,接下来我就介绍一下如何跨平台使用Mysql. 这里所谓的跨平台就是Windows,Linux,Mac共同用一套M ...
随机推荐
- <HBase><读写><LSM>
Overview HBase中的一个big table,首先会按行划分成一些region(这些region之间是有序的,由startkey保证),每个region分配到不同的节点进行存储.因此,reg ...
- shelly - HYMN TO INTELLECTUAL BEAUTY
HYMN TO INTELLECTUAL BEAUTY III No voice from some sublimer world hath ever To sage or poet these r ...
- python-oop的理解
OOP是面向对象编程,特征分别是封装.继承.多态.抽象. 封装:封装是指将对象信息状态通过访问权限修饰符隐藏在对象内部,不允许外部程序直接访问,如果外部程序要访问对象内部,可以调用内部提供的get或s ...
- mysql数据库负载均衡
负载均衡集群是有一组相互独立的计算机系统构成,通过常规网络或专用网络进行链接,有路由器衔接在一起,各个节点相互协作,共同负载.均衡压力,对客户端来说,整个群集可以视为一台具有超高性能的独立服务器. 实 ...
- Kaggle(2):验证和过分拟合
目前看来,随机森林是比较常用且有效的分类算法.以下先简要介绍python中随机森林的使用方法,然后谈谈分类结果的准确度验证和过拟合等两个重要问题. 1.随机森林的参数 在Scikit learn中使用 ...
- 转:openwrt 框架分析
本文是本人对OpenWrt的Makefile的理解,并非转载.OpenWrt是一个典型的嵌入式Linux工程,了解OpenWrt的Makefile的工作过程对提高嵌入式Linux工程的开发能力有极其重 ...
- HTML Viewer展示不同字体
过去有相关帖子提到Power BI可以使用不同字体.小悦也最近也找了一些方法尝试.如果大家想要在Power BI展示更多类型的字体,可以使用HTML Viewer自定义控件,增加额外的字体.大家可以利 ...
- python3.6升级
Ubuntu 14.04 and 16.04 If you are using Ubuntu 14.04 or 16.04, you can use Felix Krull's deadsnakes ...
- 2017青岛赛区网络赛 Smallest Minimum Cut 求最小割的最小割边数
先最大流跑一遍 在残存网络上把满流边容量+1 非满流边容量设为无穷大 在进行一次最大流即可 (这里的边都不包括建图时用于反悔的反向边) #include<cstdio> #include& ...
- 卸载Mariadb-报错
1. rpm -qa|grep aria MariaDB-client-10.1.22-1.x86_64MariaDB-devel-10.1.22-1.x86_64MariaDB-shared-10. ...