Linux git显示Mac NFS文件系统上更改的随机文件

Linux git显示Mac NFS文件系统上更改的随机文件,linux,git,osx-snow-leopard,nfs,Linux,Git,Osx Snow Leopard,Nfs,我们在工作中遇到了一个我一直无法解决的奇怪问题。我们都在台式机上使用带雪豹的MacBook,我们也有一些远程使用的Linux服务器。我的一些团队成员将git存储库放在一个NFS文件系统上,该文件系统在Mac和Linux服务器之间共享,因此他们不必考虑在个人工作流中在存储库之间共享代码 这就是奇怪的开始,在OSX机器上,当您尝试合并或切换分支等时,git将随机显示一些状态为过期的文件。如果您运行git status则不会显示过期的文件gitk将以与status通常相同的方式显示已修改但未提交的文件

我们在工作中遇到了一个我一直无法解决的奇怪问题。我们都在台式机上使用带雪豹的MacBook,我们也有一些远程使用的Linux服务器。我的一些团队成员将git存储库放在一个NFS文件系统上,该文件系统在Mac和Linux服务器之间共享,因此他们不必考虑在个人工作流中在存储库之间共享代码

这就是奇怪的开始,在OSX机器上,当您尝试合并或切换分支等时,git将随机显示一些状态为过期的文件。如果您运行
git status
则不会显示过期的文件
gitk
将以与status通常相同的方式显示已修改但未提交的文件。如果您
reset--hard
这些文件,您有时可以在这些文件再次出现之前更改分支,但大多数情况下不能。如果您登录到其中一台Linux机器并查看同一个存储库,那么一切都会正常工作。文件未标记为已更改,您可以执行任何您喜欢的操作


我已经排除了行尾差异和文件模式差异是罪魁祸首,但我不确定还有什么可以尝试。是否存在一些特定于OSX的NFS交互,我们必须以某种方式加以解决?

服务器和工作站之间的时间不同步可能会导致文件的修改时间不可靠。设置
core.trustctime
是否有帮助?(默认情况下为true)。
还有一个更重的设置:
core.ignoreStat
忽略更改检测代码中的complete
stat(2)
信息。

您的NFS服务器是否正确保留了可执行位?除了@Romains问题:当文件显示为“过期”时:
git diff
返回什么?我已经更新了一点帖子,我错了,文件实际上没有显示在状态中
git diff
不显示任何内容(立即返回,无输出)ls-l看起来都一样,还有什么我应该看的吗?在启用空白模式的emacs中,Linux和Mac上的文件似乎相同,并且具有相同的文件编码。受影响的文件名是什么?基于信息不足的猜测,您的文件名只有字母大小写不同。不,所有文件名都完全不同。没有更多信息的原因是我只知道这些。我断断续续地想弄明白这一点已经有一段时间了,我已经尝试了所有我能在网上找到的东西。它甚至不是始终如一的相同文件,只是一个项目中包含数百个文件的10多个随机文件集。