git作为一个主流的版本控制系统,在实际生产环境中会经常使用。跨平台开发的项目在使用git作为源代码管理工具时,可能在不同系统上使用出现一些问题,在此记录在真实跨平台项目中使用git遇到的一些问题和解决方法。
1.https地址克隆失败
fatal: unable to access 'https://192.168.1.111/xxxx.git/': server certificate verification failed. CAfile: none CRLfile: none
上面提示意思服务器ssl证书验证失败,一般内网搭建的gitlab服务器会出现上面的问题,需要在使用git时关闭ssl验证。
对特定仓库关闭,先进入到仓库目录,再关闭该仓库的ssl校验
cd ~/example
git config http.sslVerify false
全局关闭git的ssl验证,一般使用这个方式解决
git config --global http.sslVerify false
2.每次git pull或git push都需要输入用户名密码
全局记住凭证
git config --global credential.helper store
取消全局记住凭证,一般在账号密码输入错误,但是没有弹出用户名和密码弹窗使用。
git config --global --unset credential.helper
3.git status会有大量修改的文件,git diff后都是old mode 100644和new mode 100755区别
在做跨平台(windows和linux)开发时,在linux中可能会对代码目录进行chmod 777 -R .操作,从而导致所有文件属性发生变化,git status时就会出现大量变更的文件。
对特定仓库关闭
cd ~/example
git config --add core.filemode false
全局关闭
git config --global --add core.filemode false
实测发现在Ubuntu24.04.1环境中使用全局关闭命令后,再克隆仓库代码,该仓库中的core.filemode仍然是true,实际使用时需要自己判断,应该使用全局关闭还是使用特定仓管关闭。
4.换行符处理差异
在 Windows 系统中,换行符通常是 “\r\n”(CRLF),而在 Linux 系统中是“\n”(LF),对与常规的源代码文件(*.h;*.c;*.cpp)其实没有什么区别,在git签出和提交中可能会自动转换,直接关闭git自动转换功能。
git config --global core.autocrlf false