• windows下git显示文件被修改,实际没有改动的问题解决办法


    不少开发者可能遇到过这个问题:从git上拉取服务端代码,然后只修改了一处地方,准备提交时,用diff软件查看,却发现整个文件都被修改了。这是git自动转换换行符导致的问题。

    原因

    不同操作系统使用的换行符是不一样的。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.禁用git的自动换行功能:
    在本地路径C:\ Users\ [用户名] \ .gitconfig下修改git配置[core],如果没有就直接添加上去:

    [core]
    autocrlf = false
    filemode = false
    safecrlf = true
    

    git bash命令行也可以修改,最终也是修改.gitconfig配置文件:
    分别执行:

    git config --global core.autocrlf false
    git config --global core.filemode false
    git config --global core.safecrlf true
    

    2.配置IDE开发环境,将它的换行格式指定为LF,以android studio为例:


    原文:https://blog.csdn.net/whsdu929/article/details/52490188

    方法二:

    当我们pull完代码时进行修改,修改后提交代码时会发现一些文件并未修改,但显示有差异,而且通过git status查看时是Untracked file如下:

    $ git status
    On branch master
    Your branch is behind 'origin/master' by 27 commits, and can be fast-forwarded.
      (use "git pull" to update your local branch)

    Untracked files:
      (use "git add <file>..." to include in what will be committed)

            model/src/main/java/

    nothing added to commit but untracked files present (use "git add" to track)

     

    如果忽略这些问题有时代码可以正常的pull和commit,但有时会导致我们pull代码失败,并提示:

    error: The following untracked working tree files would be overwritten by merge

    出错的文件正是那些不是我们修改的文件,这时候可以用如下方式进行处理:

    1、git fetch origin master

    把远端的代码拉倒本地,并把指针放到FETCH_HEAD中

    $ git fetch origin master
    connected to center BJ
    From ssh:****
     * branch            master     -> FETCH_HEAD
    Warning: cannot log into influxdb

    2、git reset --hard FETCH_HEAD

    把本地的代码指针切换到刚刚拉下来的那个指针上;

     

    3、git push origin master

    把本地的代码推送到远端,其实即使不推送也没问题,因为本地代码跟远端已经一致了;

    $ git push origin master
    connected to center BJ
    Warning: cannot log into influxdb
    Everything up-to-date

     

    4、git status

    再次查看发现那些文件的差异已经没有了

    $ git status
    On branch master
    Your branch is up-to-date with 'origin/master'.

    nothing to commit, working directory clean

    5、后面可以继续执行其他操作了

    原文:https://blog.csdn.net/weixin_38178584/article/details/81298004

  • 相关阅读:
    什么是web标准
    Axure 快捷方式
    asp.net mvc4中model与Model的区别
    Git 操作常用命令
    ASP.NET MVC 中@html.ActionLink的几种参数格式
    Datagridview控件实现分页功能
    winform 拖动无边框窗体(调用Windows API)
    利用C#轻松创建不规则窗体
    Linq to sql 操作
    第一篇博客,写些学习感想
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15453494.html
Copyright © 2020-2023  润新知