1.首先是CRLF与LF格式问题。
如果你发现你什么都没改,但是git status命令下面一大堆文件改动。使用git diff命令查看区别时,发现几乎每一行代码后面都会有个^M的区别,那恭喜你碰到格式问题了,不过解决方法很简单,在git bash里面输入下面这个命令即可:
git config --global core.autocrlf true
那为什么会产生这个问题呢?
这个问题涉及到换行符,不同操作系统下,换行符是不一样的。Windows默认采用的是CRLF格式,Linux则采用的LF格式。
具体请参考这篇博客
一、AutoCRLF
提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true
提交时转换为LF,检出时不转换
git config --global core.autocrlf input
提交检出均不转换
git config --global core.autocrlf false
二、SafeCRLF
拒绝提交包含混合换行符的文件
git config --global core.safecrlf true
允许提交包含混合换行符的文件
git config --global core.safecrlf false
提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn
2.old mode与new mode问题
解决完CRLF问题后,紧接着,你可能会碰到old mode与new mode问题,这个问题大概是下面这样的:
你发现你什么都没改,可是git status提示你文件是有改动的,等你用git diff查看改动,发现啥都没有,只是显示成下面这样:
碰到这个问题,直接执行下面这个命令吧:
git config --add core.filemode false
具体原因请参考这篇博客
3.bash问题导致的Fetch failed: Could not read from remote repository.
如果你也跟我一样是windows的Android Studio用户,并且不太熟悉cygwin,那么请换成git bash吧。。
我是被这个cygwin坑到了。。。
具体情况是这样的:在cygwin的bash里面,用命令行可以正常执行pull, commit ,以及push等等git常用命令,但当你用Android Studio去执行时,会发现:
失败!失败!失败!
不管你怎么去Setting里面设置git模式为native或者built-in,都毫无卵用。。。
并且!!!你在cygwin里面提交代码或者更新代码以后,Android Studio是不会同步的!!!Android Studio里面的Local changes里面会出现一堆改动,然鹅,你什么都没改。。。
如果你也跟我一样出现这个问题,解决方案如下:
将你的bash从cygwin换成git bash!
将你的bash从cygwin换成git bash!
将你的bash从cygwin换成git bash!