并行使用 cygwin-git 和 git for windows

Use cygwin-git and git for windows in parallel

我并行使用 cygwin-git 和 git 作为 Windows(实际上由 TortoiseGit 使用)。如果我在同一个 repo 上使用它们,如果我之前使用过其他客户端,git status 会开始刷新索引。

我比较了每个客户端 运行 之后 git ls-files --debug 的输出。不同之处在于文件统计信息。虽然 cygwin-client 确实保存了文件统计信息:

  dev: -1177461325      ino: 227463
  uid: 1129333  gid: 1178613

git 为 Windows 生成的索引中的文件统计信息均为 0:

  dev: 0        ino: 0
  uid: 0        gid: 0

我可以停止 git 保存文件统计信息从而防止在切换客户端时刷新索引吗?

您可以尝试几个 Git 选项,看看它们是否有帮助。您可以将 core.checkstat 设置为 minimal,这将忽略 uid、gid、设备和 inode 编号,并且可以选择将 core.trustctime 设置为 false,从而忽略 ctime。根据您提供的输出,您应该按顺序尝试。

请注意,您可能会 运行 遇到其他一些不兼容问题,这些不兼容问题可能会导致一些问题无法解决,而这些问题并不那么容易解决。如果你有符号链接,它们可以以不同的方式存储。 Cygwin 可以使用本机 Windows 符号链接,也可以不使用,这取决于它是否使用(以及如果使用,Cygwin 如何存储大小),您可能会发现 git status 仍然执行刷新。对于 Linux 的普通 Windows 和 Windows 子系统也会发生这种情况,并且在那里也无法修复。