git crlf、lf自动转换引起的问题

??项目组最近加了一个新功能到代码中,使用flyway记录数据库版本变更,,,该工具会记录每次数据库结构的修改并生成sql文件存在指定目录上(当然必须用它来变更数据库,外部的变更它是无法感知的),然后每次启动时flyway会检查使用的数据库和当前项目代码中的sql变更版本是否一致,一致正常启动,不一致中如果是数据库落后将会更新数据库(这样能够保证代码在任何地方运行数据库都是一致的),否则就报错了。数据库中有一张表记录版本信息,如下图:

同时本地代码中也有一个文件夹保存每次操作的sql语句,如下图:

通过对比checksum值来判断当前sql语句和生成数据库的执行语句是否一致,checksum值由CRC32计算后处理得出。

??然后问题就来了,组中的其他人搭建好flyway后,项目文件生成了两个sql文件,我用git拉下来后启动报错,checkupsum值对不上,,然后我又不懂这个flyway完全不知道咋回事,然后就根据报错的位置一点点找到checkup值生成的代码,发现是CRC32计算的,,(就这么搞了一两个小时才发现是文件不一致了),但是都是从git拉的怎么就我不一致呢???想到可能是文件换行符的问题,遂把那几个sql文件的文件换行符全换成了crlf(windows中的换行符),然后居然就能够运行。。。关于为啥都从git拉取的文件换行符会不一样原因是:他们都用的那个小乌龟的可视化,我用的命令行。可视化工具自动配置了文件换行符的自动转换(这是git的一个智能功能,上传时将文件换行符替换为lf,,拉取时再替换为crlf,,这样保证中心仓库使用UNIX风格的换行符,,本地能够根据运行环境使用相对应的换行符风格),但是命令行并没有配置。

??解决办法也很简单,开启git 的自动转换。

git config --global core.autocrlf true //开启换行符自动转换
git config --global core.safecrlf true //禁止混用换行符

原文地址:https://www.cnblogs.com/wuyoucao/p/9594171.html

时间: 2024-10-16 05:13:11

git crlf、lf自动转换引起的问题的相关文章

关于git CRLF LF结尾的问题

在使用git的过程中,如果我们的项目是跨平台开发的 那么CRLF的处理也许会成为一个很头疼的事情,有可能会出以下的莫名其妙的问题: 我们的某个开发人员在linux上提交的一个文件 当从windows上pull下来后,没做任何的修改,查看其status,它的状态已经是modifed了 即使你使用git checkout -f来恢复改文件,它的状态仍然是modified, 真是郁闷… 后来,才发现就是CRLF惹的祸 我们都知道,在Windows上是CRLF来作为一行的结束符,而Linux上则是LF作

Git中CRLF与LF的转换

1.换行符在不同的操作系统上的表示 首先要理解的一点是,对于不同的操作系统,对于换行符的表示是不一样的.也就是说当我们在编辑一个文件,在键盘上按下回车键的时候,对于不同的操作系统保存到文件中的换行符是不一样的.见下表: CR:表示回车\r LF:表示换行\n CRLF:表示回车换行\r\n 敲下回车键,不同的操作系统保存到文件中的值: Windows:使用的是CRLF ==> 即\r\n,文件中保存的是\r\n Linux/Unix: 使用的是LF ==> 即\n,文件中保存的是\n Mac

[git] warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF[ git 处理和修改行结束符(CRLF和LF)]

我自己的设置是: [core] autocrlf = false[core] safecrlf = true 取消自动转换CRLF(上图中选的是commit as is),但是有提交前混用检查 本人用的是WINDOWS下的PHPSTORM开发的PHP 遇到这两个错误,是因为Git的换行符检查功能. core.safecrlf Git提供了一个换行符检查功能(core.safecrlf),可以在提交时检查文件是否混用了不同风格的换行符.这个功能的选项如下: false - 不做任何检查 warn 

Git坑换行符自动转换 [转载]

转自https://www.cnblogs.com/zjoch/p/5400251.html 源起 一直想在 GitHub 上发布项目.参与项目,但 Git 这货比较难学啊.买了一本<Git 权威指南>,翻了几页,妈呀,那叫一个复杂,又是 Cygwin 又是命令行的,吓得我不敢学了. 终于某天发现 GitHub 还有一个 Windows 客户端,试了一下还挺好用.不需要掌握太多的 Git 原理和命令,也可以在 GitHub 上麻溜建项目了,甚是欢喜.可是好景不长,第一次参与开源项目就出洋相了.

[git] -- warning: LF will be replaced by CRLF in app/app.iml. The file will have its original line endings in your working directory.

遇到这个错误,因为是git的换行符检查功能.之前代码是在MAC下,后来放在windows系统下,git add .的时候报这个错误. core.safecrlf git 提供了一个换行符检查功能(core.safecrlf),可以在提交时检查文件是否混用了不同风格的换行符. false --- 不做任何检查: warn --- 在提交的时候检查并报告: true --- 在提交时检查,如果发现混用则拒绝提交: 建议使用最严格的true选项. core.autocrlf 如果用两台不同系统的电脑写

[GIT] warning: LF will be replaced by CRLF问题解决方法

[GIT] warning: LF will be replaced by CRLF问题解决方法 博客分类: Rails git crlf rails 开发环境: 操作系统: windows xp ruby 1.9.2 rails 3.1.3 git version 1.7.8.msysgit.0 问题描述: 启动GIT: 新建了一个rails工程 Ruby代码   $ rails new blog 当切换到blog目录下执行 Ruby代码   $ git init $ git add . 系统

禁止 git 自动转换换行符

开发团队都在 windows 下开发,有IDE管理代码.对我们来说,最好是禁用换行转换符的功能.我用 cygwin 提交代码,提交时总提示自动转换换符.其实都不用提交,仅运行 git status 看有没有提示就知道了. 也是在网上找了一圈,一些建议是运行下面的命令: git config --global core.autocrlf falsegit config --global core.saftcrlf true 如果不运行命令,直接编辑 ~/.gitconfig 增加下面的内容也是一样

github 换行符自动转换功能

最近想把自己的一个Qt工程同步到github上,但是当自己把代码从仓库中签出来的时候编译的时候总是出现一些很奇葩的错误,一开始以为是源文件编码的问题,改了编码以后问题还是没有解决,我比较了一下两个工程中的文件,真是一比吓一跳啊 windows换行是\r\n,十六进制数值是:0D0A.LINUX换行是\n,十六进制数值是:0A Git 由大名鼎鼎的 Linus 开发,最初只可运行于 *nix 系统,因此推荐只将 UNIX 风格的换行符保存入库.但它也考虑到跨平台协作的场景,并且提供了一个“换行符自

GitHub 第一坑:换行符自动转换

源起 一直想在 GitHub 上发布项目.参与项目,但 Git 这货比较难学啊.买了一本<Git 权威指南>,翻了几页,妈呀,那叫一个复杂,又是 Cygwin 又是命令行的,吓得我不敢学了. 终于某天发现 GitHub 还有一个 Windows 客户端,试了一下还挺好用.不需要掌握太多的 Git 原理和命令,也可以在 GitHub 上麻溜建项目了,甚是欢喜.可是好景不长,第一次参与开源项目就出洋相了. 经过 小心翼翼地 Fork 了朴灵大大 (@JacksonTian) 的 EventProx