我们在工作中遇到一个奇怪的问题,我一直无法弄清楚。我们都在台式机上使用带有Snow Leopard的MacBooks,我们还有一些我们也远程使用的Linux服务器。我的一些团队成员将git存储库放在Mac文件系统和Linux服务器之间共享的NFS文件系统上,这样他们就不必考虑在个人工作流程中在存储库之间共享代码。
这是奇怪的开始,在OSX机器上,当你尝试合并或切换分支等时,git将随机显示一些状态状态的文件。如果你运行git status
没有文件显示过期。 gitk
将以与状态通常相同的方式将文件显示为已修改但未提交。如果您reset --hard
这些文件,您可以有时在重新出现之前更改分支,但大多数情况下不会。如果您登录其中一台Linux机器并查看同一个存储库,一切都会完美运行。这些文件没有标记为已更改,您可以随意执行任何操作。
我已经消除了行结尾差异和文件模式差异作为罪魁祸首,但我不确定还有什么可以尝试。是否有一些OSX特定的NFS交互我们必须以某种方式解决?
答案 0 :(得分:3)
服务器和工作站之间的不同步时间可能会导致文件的修改时间不可靠。 core.trustctime
的设置有帮助吗? (默认情况下是这样)。
设置更加重要:core.ignoreStat
忽略更改检测代码中的完整stat(2)
信息。