『阿男的技术日志』*02 处理Git项目当中既有Windows文件又有Linux/Unix/MacOS文件的问题*...

『阿男的技术日志』*02 处理Git项目当中既有Windows文件又有Linux/Unix/MacOS文件的问题*

我们一般在处理git的line ending时,一般会把core.autocrlf设置为input模式:

$ git config --global core.autocrlf
input

input模式的含义是:不管当前工作目录下的文本文件使用的EOL(end of line)是CRLF还是LF,commit回库时都会转化为LF。这样,保证了在git的仓库中的代码使用的EOL都是LF。这样对于Unix(以及Linux和MacOS)环境下是适用的。

但有的时候,我们的代码仓库可能同时包含Windows环境下和Unix使用的文件,比如Gradle项目就是很好的例子,它同时包含Windows的.BAT文件和Linux的脚本文件:

$ tree
.
├── build.gradle
├── gradle
│ └── wrapper
│     ├── gradle-wrapper.jar
│     └── gradle-wrapper.properties
├── gradlew
└── gradlew.bat

2 directories, 5 files

在这种情况下,很显然gradlew.bat应该是保持CRLF的EOL,commit进库是不应该被转化为LF。如果我们强行签入,git也会报错:

$ git add *
fatal: CRLF would be replaced by LF in gradlew.bat.

因此,我们需要一种机制,让git对gradlew.bat做特殊处理。解决的方法就是在项目中添加一个.gitattributes^1文件,文件内容如下:

$ cat ./.gitattributes
*.bat -text

这样,我们把*.bat文件标记为-text,git也就不会把这类文件识别成代码文件,也就不再自动处理这类文件的EOL,而是保持它本来的样子签入。因此加入了.gitattributes的相关配置以后,git就可以正确添加.bat文件,不再报错。

转载于:https://my.oschina.net/u/3195023/blog/818867

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值