在使用git时,有时会遇到明明没有修改某个文件,但git status一直提示其处于modified状态,使用git restore 或git reset均不能消除modified,尤其是使用windows时更易遇到此问题,如果使用git svn功能也很容易遇到此问题
这种情况就是我们遇到了git的换行符问题了。
基本上搜索到的都是在说这种情况
在checkout后由于有自动转换,CRLF变为了LF,则产生modified状态
这时你可以使用git config --global --core.autocrlf false来关闭这个自动转换
或者手动将该文件中的换行修正为统一的LF或CRLF
重点来了这也是今天遇到的情况
项目中使用了一些第三方代码,这些代码中有些包含.gitattributes 大致如下
# default behavior is to always use unix style line endings
* text eol=lf #这一行提示git文件中的换行符使用LF
*.png binary
*.pdn binary
*.jpg binary
*.sln binary
*.suo binary
*.vcproj binary
*.patch binary
*.dll binary
*.lib binary
第三方代码在经过我们在windows上编辑编译后,提交到服务器时可能使用了CRLF,这时下载代码下来,文件本身是CRLF的,但是.gitattributes指定了LF,git就会认为modified
解决办法
ps:如果项目中有这样的情况,git并不会立刻提示modified,而是不知道什么时候就触发了,很是奇怪
遇到git一直提示某文件modified