windows平台git每次都会出现莫名其妙的许多changs,但是对比后又没有发现不同

 广东淡水未央 发布于 2022-10-25 07:10

我在bitbucket.org上有一个git库,方便我在单位和家里的机子上同步代码,但是每次从服务器上拉下来代码都会出现很多修改,重新clone也不行,用文件对比工具查看也没有看到修改。

怀疑是line endings的问题,把git重新安装了下,选择了checkout what,commit what那个选项,仍然不行,求解释求指导,谢谢 o(╯□╰)o

-----补充----

现在确定是line endings问题了,下面是commit的log,一满屏,都是这样的。怎么设置?需要重新安装还是修改配置?
另外这个问题是什么原因导致的呢?我两台机子上设置的一样呀,难道是服务器给转了?

The file will have its original line endings in your working directory.
warning: CRLF will be replaced by LF in src/Presentation.Seedwork/Resources/Mess
ages.Designer.cs.
The file will have its original line endings in your working directory.
37 files changed, 3234 insertions(+), 3234 deletions(-)

3 个回答
  • 能比较出line ending是任何比较工具的基本能力

    2022-10-26 14:27 回答
  • 根据你的描述,看起来你公司和你家里用的是不同的操作系统,所以换行符的差异会让 Git 认为文件的内容发生了变化。这个是可以设置成让 Git 智能帮你转换的:

    1. 在 Windows 系统下,安装 Git 时应当置选项 core.autocrlftrue,也就是下图所示的那一个:

    2. 在 Linux/Unix/Mac 系统下,一般来说保持默认设置就好了(没有安装界面供选择)。当然你可以手工编辑 ~/.gitconfigcore.autocrlfinput,如我机器上的设置:

    以上两种设置最终的结果就是提交的时候 Git 总是将换行符自动转为 LF,并且在 Windows 下 checkout 回来时自动帮你转换为 CRLF,以便适应 Windows 下的编辑器。

    如果你做了上述设置依然会碰到题目中描述的问题,那么不用想,一定是你的团队中另外有别的成员没有做对以上两点的设置(很大的可能性是使用 Windows 的),你们可以逐一排查。

    另外,安装 Windows Git 时另外一个设置也比较让人费解,建议选下图这样的:

    选择这种,所需要的配置量最少,CLI 和 Linux 的兼容性也比较高,唯一的缺陷就是 Windows CLI 里和 Linux 重名的命令会被 Linux 版本覆盖掉,比如 find 之类的。在我看来,反正 Windows CLI 是个渣渣,覆盖了也无所谓了。

    2022-10-26 14:27 回答
  • 试试在你本地的repo上设置一下

    git config core.filemode false
    git config core.eol lf
    
    2022-10-26 14:27 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有