解决Windows下git没有改动却一直提示修改

2019-02-08 11:39:31 5620

在Windows下开发时,很多人都会遇到类似的情况——git clone或git pull下来之后,还未做任何改动,却一直提示有修改。但用git diff比较时却看不到什么修改的地方,甚至看不到什么修改的文件。出现这种情况,一般是以下原因:

  1. 万恶的【换行符】造成的问题

    【原因】

    不同操作系统使用的换行符不一样。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可能会不工作,尤其是文件中出现中文字符后有换行符时。

    【解决办法】

    ⑴使用命令全局禁用自动转换


    1
    2
    3
    git config --global core.autocrlf false
    git config --global core.filemode false
    git config --global core.safecrlf true


    或直接修改git的配置文件,在C:\ Users\ [用户名] \ .gitconfig中修改git配置[core]


    1
    2
    3
    4
    [core]
    autocrlf = false
    filemode = false
    safecrlf = true


    ⑵IDE设置指定换行符


  2. 带特殊符号的文件

    【原因】

    Unix/Linux/Mac中提交了带特殊符号的文件,例如带冒号的文件,在Windows中clone或pull下来时就会被自动delete。

    【解决办法】

    ⑴在Windows上git status查看是否存在被自动删除的文件,重命名或者删除该文件后提交

    ⑵在Unix/Linux/mac上重命名推送后,Windows重新pull


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: