Linux git显示Mac NFS文件系统上更改的随机文件
我们在工作中遇到了一个我一直无法解决的奇怪问题。我们都在台式机上使用带雪豹的MacBook,我们也有一些远程使用的Linux服务器。我的一些团队成员将git存储库放在一个NFS文件系统上,该文件系统在Mac和Linux服务器之间共享,因此他们不必考虑在个人工作流中在存储库之间共享代码 这就是奇怪的开始,在OSX机器上,当您尝试合并或切换分支等时,git将随机显示一些状态为过期的文件。如果您运行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通常相同的方式显示已修改但未提交的文件
git status
则不会显示过期的文件gitk
将以与status通常相同的方式显示已修改但未提交的文件。如果您reset--hard
这些文件,您有时可以在这些文件再次出现之前更改分支,但大多数情况下不能。如果您登录到其中一台Linux机器并查看同一个存储库,那么一切都会正常工作。文件未标记为已更改,您可以执行任何您喜欢的操作
我已经排除了行尾差异和文件模式差异是罪魁祸首,但我不确定还有什么可以尝试。是否存在一些特定于OSX的NFS交互,我们必须以某种方式加以解决?服务器和工作站之间的时间不同步可能会导致文件的修改时间不可靠。设置
core.trustctime
是否有帮助?(默认情况下为true)。
还有一个更重的设置:
core.ignoreStat
忽略更改检测代码中的completestat(2)
信息。您的NFS服务器是否正确保留了可执行位?除了@Romains问题:当文件显示为“过期”时:git diff
返回什么?我已经更新了一点帖子,我错了,文件实际上没有显示在状态中git diff
不显示任何内容(立即返回,无输出)