当前位置:首页 > 开发工具及运维 > Git LF和CRLF问题解决记录

Git LF和CRLF问题解决记录

7个月前 (05-20)57

度娘的答案让我们设置:git config –global core.autocrlf false;
(我当时看到这个答案的时候呢!也没有多想,直接就是一顿命令敲下去,然后发现我的问题并没有解决……继续纠结。。。)
好了,纠结了一晚上没有搞定,反而把我的git配置文件搞的乱七八糟的!接着第二天继续来……这次学聪明了。我们先来看看问题,然后寻找是什么原因造成的。
我的问题呢!就是我每次在windows下面修改了代码然后push给git然后linux下面pull,但是我在linux下面没有修改过代码。下次我同样在windows下面修改代码然后push然后同样在linux下面pull就会出现那个CRLF的警告然后出现致命错误不能pull代码需要先push本地修改的代码。这就尴尬了,我都没改代码居然提示有修改的文件需要先提交。。。然后度娘问为什么出现这个问题(有事多度娘这句话是没错的。)然后就找到了问题同时给出了上面的解决方案。其实不能说这个方案是错误的,只能说那个方案对于我并没有理解透彻。
出现这个问题的原因就是Linux系统和windows系统下的换行符不一样Linux是’\n’既LF,windows下面确实’\r\n’既CRLF。这本来很正常嘛但是坑的就是git的默认设置是push的时候会把CRLF转换成LF而pull的时候会把LF转换成CRLF。这就尴尬了!!!所以每次我pull。git就会告诉你你已经有文件被修改了。(除非没有换行符)
哦了!问题出现了,原因找到了。接下来就是解决问题了。这个需要慢慢来,不能着急。。。先来根烟!好了继续我们的爬坑之路。
现在我们首先来了解下git core.autocrlf 的各项配置的意义:
git config –global core.autocrlf true//设置git在push转换成lf,pull的时候转换成crlf(其实默认配置就是这个样子的)
git config –global core.autocrlf false//设置git在push和pull的时候不会进行转换(这个呢!不会报那个CRLF的错误但是你会发现可能会出现错误,我就是laravel的routes.php配置的路由跑不了了!!!)
git config –global core.autocrlf input//设置git在push的时候将lf转换成crlf,pull的时候并不会把crlf转换成crlf。(这个对我有帮助)
好了,原理我们也清楚了。最后说说我的解决方案!其实很简单:
windows 下面采用默认的配置。
linux 下面执行命令git config –global core.autocrlf input
这样我们在windows下面pull的时候会将lf转换成crlf在push的时候会将crlf转换成lf在linuxpull的时候我们不会转换但是提交的时候会将crlf转换成lf。(其实想想在linux下面设置成git config –global core.autocrlf false应该也是可以的哦!)

(这里是因为我的前面一顿命令敲下去把自己git的配置文件全部给整乱了!所以说说我的整理过程)
使用git config –list(注:不要进入你的项目目录,因为项目目录也会有git配置的),出现git配置项列表:
Git LF和CRLF问题解决记录 _ Java侠
我们看到有两个core.autocrlf=true,这种情况下呢你可以选择不去修改配置文件,出现这种情况其实就是你自己在后面修改了core.autocrlf的问题。我的情况就是我的配置文件中有两个相同的配置项,而且两个配置项的值还不是一样的,所以你不管怎么改都只能改变一个。从而导致我修改的配置好像没有效果。如果你也是这种情况你可以进入git bash界面:
Git LF和CRLF问题解决记录 _ Java侠
然后vi ~/.gitconfig
Git LF和CRLF问题解决记录 _ Java侠
删除一个autocrlf选项就可以了。
好了!!!终于可以睡觉了!!!所以今天早上就把这个记录下。。。然后继续我们的爬坑之旅。。。

作者:木秀猿林
来源链接:https://blog.csdn.net/w6248117/article/details/76177103

标签: Git

“Git LF和CRLF问题解决记录” 的相关文章

Git基本使用教程(一):入门及第一次基本完整操作

Git基本使用教程(一):入门及第一次基本完整操作

git基本使用教程 传送门:Git基本使用教程(二):基本常用命令 官方文档:Git基础 带着以下问题阅读本文,相信会事半功...

git 获取指定历史版本代码,并拉取下来(超详细)

git 获取指定历史版本代码,并拉取下来(超详细)

1、先创建好文件夹,然后git初始化  2、找到你项目的SSH地址,复制下来  3、把复制的SSH地址关联起来,关键语...

git 撤销合并 重新合并

git 撤销合并 重新合并 git merge is frequently used during development of projects mana...

git 合并分支到master 上详细步骤(指令加IDEA操作)

git 合并分支到master 上详细步骤(指令加IDEA操作)

    (前提,熟悉git基本原理,以及基本命令) 本博客主要记录下自己在使用git期间的一些问题,主要是创建分支,切换分支,推送分支到...

Git命令之rebase合并分支

Git命令之rebase合并分支

零、使用场景 正常合并分支,我们一般都用git merge命令,这样子会导致git的graph有交叉,而不是一条直线。 交叉是这样子的(当三个人在master上拉出分支开发,...

git合并解决冲突的步骤是

git合并解决冲突的步骤是

先本地直接提交代码:git push origin master 如果别人在自己之前提交了修改,git会提示push失败,需要先...

IDEA中使用git合并分支的过程报错:cant checkout because of unmerged files

使用idea的git插件控制代码分支合并时,由于操作不当,报错了,控制台报错如下: cant checkout because of unme...

git rebase 合并多次提交.

git rebase 合并多次提交.

一、应用场景     为什么需要合并多个提交呢?     常常一个功能的开发,修修补补 commit 了 n 多次,带来的结果就是提交...

android studio如何使用git提交、拉取、合并代码的操作AAAAAA

android studio如何使用git提交、拉取、合并代码的操作AAAAAA

  git的安装与基本使用方法 https://www.jianshu.com/p/29b392fba2b9   Git的点点滴滴,附带And...

GIT 分支管理:创建与合并分支、解决合并冲突

GIT 分支管理:创建与合并分支、解决合并冲突

   分支就是科幻电影里面的平行宇...