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

Posted

技术标签:

【中文标题】git 显示在 Mac NFS 文件系统上更改的随机文件【英文标题】:git shows random files changed on Mac NFS filesystem 【发布时间】:2011-12-19 15:03:54 【问题描述】:

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

这是奇怪的开始,在 OSX 机器上,当你尝试合并或切换分支等时,git 会随机显示一些过期的文件 in status。如果你运行git status no files显示已过期。 gitk 将显示文件已修改但未以与通常状态相同的方式提交。如果您reset --hard 这些文件,您可以有时在这种情况再次发生之前更改分支,但大多数情况下不会。如果您登录其中一台 Linux 机器并查看相同的存储库,一切都会完美运行。这些文件没有标记为已更改,您可以做任何您喜欢的事情。

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

【问题讨论】:

您的 NFS 服务器是否正确保留了可执行位? 对@Romains 问题的补充:当文件显示为“过期”时:git diff 返回什么? 我已经更新了我的帖子,我错了文件实际上并没有显示在状态中。 git diff 什么都不显示(立即返回,没有输出)。 ls -l 在 Mac 和 Linux 上看起来一样,还有什么我应该看的吗?在启用空白模式的 emacs 中,文件在 Linux 和 Mac 上看起来是相同的,并且具有相同的文件编码。 什么是受影响的文件名?作为基于信息不足的疯狂猜测,您的文件名称仅在字母大小写上有所不同。 不,所有文件名都完全不同。没有更多信息的原因是这就是我真正知道的一切。一段时间以来,我一直在尝试解决这个问题,并且我已经尝试了所有可以在网上找到的东西。它甚至不是始终如一的相同文件,只是一个包含数百个文件的项目中随机包含的 10 多个文件。 【参考方案1】:

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

【讨论】:

以上是关于git 显示在 Mac NFS 文件系统上更改的随机文件的主要内容,如果未能解决你的问题,请参考以下文章

Mac系统的终端显示git当前分支

在 Linux 上通过 NFS 触发 inotify 事件?

推送到 NFS 共享上的 Git 存储库失败

将 git 存储库移动到 nfs 会导致权限错误

centos8配置nfs教程本机系统mac

Mac上使用Git指南