搜索

首页  >  问答  >  正文

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

我在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(-)

大家讲道理大家讲道理2778 天前936

全部回复(3)我来回复

  • phpcn_u1582

    phpcn_u15822017-04-25 09:05:49

    试试在你本地的repo上设置一下

    git config core.filemode false
    git config core.eol lf
    

    回复
    0
  • 我想大声告诉你

    我想大声告诉你2017-04-25 09:05:49

    根据你的描述,看起来你公司和你家里用的是不同的操作系统,所以换行符的差异会让 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 是个渣渣,覆盖了也无所谓了。

    回复
    0
  • PHP中文网

    PHP中文网2017-04-25 09:05:49

    能比较出line ending是任何比较工具的基本能力

    回复
    0
  • 取消回复