git结帐文件显示为已修改

时间:2016-08-20 15:50:01

标签: git

在结帐后对OS X(git 2.7.4)上的特定存储库执行git clone <RepoUri>(后面没有显示为已修改)后跟git checkout develop后,某些文件显示为已修改。< / p>

即使git reset HEAD --hard也不会改变它们。

git diff实际上显示了文件中的更改。

为什么即使我没有更改任何文件也会发生这种情况? 我怎样才能更改这些文件?

1 个答案:

答案 0 :(得分:1)

没有看到实际的存储库(或者至少,它从中获取副本的URL)我只能猜测。但是,我之前已经看到了这个问题,特别是在OSX上。您可以在Windows上遇到同样的问题。有问题的存储库很可能是由Linux人员开发和维护的。

Git本身是路径名区分大小写(对于文件内容,编码不可知,但路径名称必须是UTF-8)。 1 < / sup>例如,如果您调用文件fooFOO,甚至fOo,则无关紧。但是,Windows和MacOS都默认为 敏感 2 文件名中的

这意味着,如果您下载的存储库包含两个目录data/Polish/(包含基于国家/地区的信息)和data/polish/(包含鞋油信息),则所有文件都在一个这些覆盖了另一个中的所有文件。即使是单个Makefile vs makefile文件对也会导致问题。这一切都适用于具有不区分大小写的文件系统的操作系统,或者如果您在OS X上的不区分大小写的挂载点中提取存储库,但默认情况下会失败。

可能你遇到过这样一个存储库。但是,为了获得更好的答案,未来请在原始问题中包含更多详细信息。 (行结束时会出现一个不相关的问题,特别是在Windows系统上,但这不太可能触及您的系统。)

1 关于内容有一些小的例外,Git特别鼓励提交消息使用UTF-8编码。文件路径名必须为UTF-8,即使文件系统上的文件使用UCS-2(Windows),并且存在路径名字符的UTF-8编码替代方案,Git也应配置为匹配操作系统的首选项(如果有)。有关详情,请参阅Git and the Umlaut problem on Mac OS X

2 更具体地说,这些是在文件创建时保留 的情况,但在文件查找时是case- 折叠。这很难做到,例如,当你要求文件straße时,我不相信操作系统会打开文件STRASSE。我更喜欢我的操作系统,不要试图首先折叠案例。 Windows和OS X都有非大小写折叠的文件系统,但由于两者都默认为进行大小写折叠,程序会根据它而意外地结束,并且关闭全局折叠有点危险。例如,我被告知,如果你这样做,MacOS Photoshop会中断。