可以在 Cygwin 中使用 git 的 MinGW 版本吗?

Is it OK to use the MinGW version of git with Cygwin?

我在 Windows 而不是 git bash 上编程时使用 cygwin 作为主要 shell 因为我想访问 Cygwin 上可用的其他程序所以我为 Cygwin 安装了 git 包,这样我就可以在那里使用 git 而无需切换 shells.

最近我需要开始使用 git lfs 但它不适用于 Cygwin(至少据我所知)。我尝试了 运行 git 的 MinGW 版本(位于 c:\Program Files\Git\mingw64\bin),它带有来自 Cygwin 的 git for Windows。我原以为它不会识别 Cygwin 绝对文件路径,因为在 Cygwin 路径上看起来像 /cygdrive/c/foo/bar 而不是像在 MinGW 上那样的 /c/foo/bar,但令我惊讶的是它似乎工作正常。

所以我想我可以卸载 cygwin git 并将 MinGW 版本放在我的 Cygwin 路径上。

像这样工作的潜在好处是我将始终可以访问 git 及其扩展的最新版本,而不是依赖于 cygwin 可用的内容。

像这样 运行 git 有什么缺点吗?

我认为缺点很小,而且我自己也这样做过。但是在将 Windows 与类 Unix 环境混合时,您确实拥有所有标准的东西,例如:

  • 文件模式。 MinGW git 可能认为一个文件是可执行的,而 Cygwin git 可能不是,并且存储库可能最终将一些文件标记为不可执行,而这些文件应该是可执行的,反之亦然。我见过这样的情况,在结帐后,git 认为文件模式已经改变,即使它没有。尝试处理此问题时查看 core.filemode 配置设置。如果您 运行 遇到问题,您可能需要将其设置为 false
  • 文件名大小写。可能您最终会在您的存储库中使用不正确的大小写,这可能会或可能不会影响 git 的一个版本与另一个版本不同。我自己从来没有 运行 遇到过这个问题,但看起来这确实是一个可能的问题。有一个与此相关的 core.ignorecase 配置设置,但通常 git 为 OS 和文件系统正确设置它,所以通常你不应该改变它。 (在 Windows 上,它通常是 true,我认为即使使用 Cygwin。)
  • 行尾。通常,git 会尝试做正确的事。但是,如果您 运行 遇到问题,请查看 core.autocrlf 配置设置。