在Windows下开发时,很多人都会遇到类似的情况——git clone或git pull下来之后,还未做任何改动,却一直提示有修改。但用git diff比较时却看不到什么修改的地方,甚至看不到什么修改的文件。出现这种情况,一般是以下原因:
-
万恶的【换行符】造成的问题
【原因】
不同操作系统使用的换行符不一样。Unix/Linux使用的是LF,Mac后期也采用了LF,但Windows一直使用CRLF【回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)】作为换行符。而git入库的代码采用的是LF格式,它考虑到了跨平台协作的场景,提供了“换行符自动转换”的功能:如果在Windows下安装git,在拉取文件时,会自动将LF换行符替换为CRLF;在提交时,又会将CRLF转回LF。但是这个转换是有问题的:有时提交时,CRLF转回LF可能会不工作,尤其是文件中出现中文字符后有换行符时。
【解决办法】
⑴使用命令全局禁用自动转换
git config --global core.autocrlf false git config --global core.filemode false git config --global core.safecrlf true
或直接修改git的配置文件,在C:\ Users\ [用户名] \ .gitconfig中修改git配置[core]
[core] autocrlf = false filemode = false safecrlf = true
⑵IDE设置指定换行符
-
带特殊符号的文件
【原因】
Unix/Linux/Mac中提交了带特殊符号的文件,例如带冒号的文件,在Windows中clone或pull下来时就会被自动delete。
【解决办法】
⑴在Windows上git status查看是否存在被自动删除的文件,重命名或者删除该文件后提交
⑵在Unix/Linux/mac上重命名推送后,Windows重新pull
以上就是Windows下git的相关问题,欢迎交流。
发问 2019/07/29 14:14
解决了我的问题