Windows下的Git:MSYS还是Cygwin?

时间:2009-04-23 23:01:44

标签: git cygwin msysgit dvcs

我打算将我的项目迁移到git,我现在想知道哪个是windows下最好和/或最稳定的选项。

从我收集到的内容我基本上有2.5个选项:

  1. MSYSgit
  2. git在Cygwin
  3. (又名2.5)来自Cygwin提示的MSYSgit(假设已经安装了Cygwin git)。
  4. 注意:IMO Cygwin本身就是一个很大的优势,因为你可以访问几乎所有的* nix命令行工具,就像使用MSYSgit bash一样,你只能访问这些工具的一小部分。

    鉴于此,你会建议什么选择?

13 个答案:

答案 0 :(得分:60)

编辑(2年后:2014年10月)

Johannes Schindelin just explained(2014年10月) msysgit逐步取消

  

我们现在有一个轻量级的Git for Windows SDK - 这实际上是通过包管理器mingw-get管理的标准MinGW / MSys系统。

     

我们决定逐步淘汰名称“msysGit”(以及GitHub org of the same name)并使用Git for Windows(使用corresponding GitHub org),并使用名称“Git for Windows” “针对面向Git for Windows开发人员的开发环境,针对”最终用户“和”Git for Windows SDK“的安装程序。


编辑(3年后:2012年4月)

如果你想在Git世界中轻量级快速启动,那么MsysGit(现在on GitHub)就是你的选择:解压缩档案,启动git-cmd.batgit-bash.bat然后你就完成了。
它的latest release (1.7.10, April 2012)现在包括support for UTF-8,还有included in GitExtension。 不要忘记设置autocrlf to false

如果你真的错过了所有其他unix命令而不是msysgit的软件包,只需下载GoW (Gnu on Windows)的版本,恰当地命名为“Cygwin的轻量级替代品”。
我的意思是:130 unix command s ...

Cygwin应该只是某些情况下的备份解决方案,例如大型 Git存储库的传输速度,如下面incrementor中的his answer所述。


2012年6月:如果您想与 GitHub 进行互动,您现在拥有 http://windows.github.com (另请参阅“Designing GitHub for Windows”)。
它不仅会为您配置ssh密钥(并将生成的公钥添加到您的GitHub配置文件中),而且还会为所有git操作安装一个... MsysGit。


原始答案(2009年4月)

我对最新版本的MsysGit没有任何问题:
我使用option 2,这意味着我只将git \ bin目录添加到PATH环境变量中,但不会覆盖一些内置的Windows工具。

我设法定义了外部工具,例如Notepad++WinMerge (or DiffMerge)

我确实成功运行了svn2git这样的脚本,因为从MsysGit1.6.2 +开始,它确实包含了'git svn'命令。

最后我期待MsysGit1.6.2.3为它will include finally 'git filter-branch' command! (缓冲版的filter-branch,但仍然如此)。

对于Unix命令,我更喜欢安装GnuWin32 coreutils package,并仅在需要时使用它们。

总而言之,我不使用Cygwin层,并设法在基于Windows的版本MsysGit中运行Git。

答案 1 :(得分:15)

是。老问题。新答案:

我们已经在大型部署中使用MSYSgit大约2年了。从本地git存储库服务器传输的速度限制在5 MiB / s以下。早期对该问题的调查表明,问题在于MSYS开发人员在Windows XP和Windows 7安全限制来自命令提示符/ bash shell的连接。事实上,这似乎不是问题所在。

我发现Darrell Mozingo's blog posting并仅使用Cygwin安装测试了一个大型(许多GiB)repo的克隆。传输速度在30 MiB / s范围内。问题是MSYSgit使用了2007年的古董OpenSSH二进制文件。

为此,在修复之前,我现在建议转移到Cygwin(尽管git的版本有点落后)。我还发现Cygwin更稳定,更不可能让perl耗尽内存。

答案 2 :(得分:9)

我已经涉足了使用MSYS和Cygwin版本的git,并且说实话,我没有找到任何经验特别好。我只是觉得git还没有为Windows做好准备。

话虽如此,我在MSYS版本中发现的一个问题是,它会将您的(非二进制)文件的行结尾从UNIX样式(换行)转换为DOS样式(回车/行 - 饲料)。您可能会将此视为错误或功能,但无法更改我可以找到的行为。 (编辑:将配置变量core.autocrlf设置为false。感谢Brian。)

OTOH,git的MSYS版本具有一些GUI功能,除非您要安装和运行整个X服务器,否则这些功能在cygwin版本中不可用。 (感谢Joce确认这一点。)

我的印象是MSYS版本更受欢迎,但这可能是因为您不需要安装cygwin生态系统来使用它。 (我同意,cygwin非常有用。)

就个人而言,我会选择BazaarMercurial,其中任何一个都可以更好地支持Windows IMO。

答案 3 :(得分:7)

Cygwin和Msys Git在正常使用情况下都能很好地工作。如果你想使用像git-svn这样的脚本,Cygwin是个更好的选择。作为一个终于跳槽到Linux的旧Windows用户,我可以肯定地说Cygwin是一个伟大的福音,并且值得拥有。

语境很重要;这些是什么项目?他们是谁用的?等

答案 4 :(得分:6)

我也测试了两个世界(CygWin和MSysgit),我的经验也是MSysgit bash有一些缺点。当Cygwin在同一个git repo上优雅地处理它时,无法成功运行git stash。

虽然没有进行深入分析......

答案 5 :(得分:4)

我目前使用Msysgit和TortoiseGit。

MsysGit UI并不是我喜欢的,所以我使用像TortoiseGit这样熟悉的工具,在使用命令行时(大部分时间),我使用Msysgit的git二进制文件

答案 6 :(得分:3)

我推荐msysgit。特别是如果它与Git Extensions一起使用:它提供了配置环境的简便方法:编辑器/差异/合并工具,并允许从用户界面执行高级git操作。

答案 7 :(得分:1)

我在MSys的cygwin实现中遇到了严重的错误:一些命令,特别是rebase,很容易失败。 Cygwin对我来说更稳定。

那说,就在一个月之前,可能会有所改善。

答案 8 :(得分:1)

我在Windows上使用过Cygwin Git和Msysgit。我建议使用Cygwin + Git。 Cygwin 1.7(目前处于测试阶段)使用git gui和gitk解决了一个主要的细微差别(至少对我而言)。早期版本的Cygwin每次在git-gui或gitk中执行某些操作时都会打开10s的cmd窗口。这已在1.7中得到解决。 Cygwin强大的shell也带来了许多linux终端的好东西。

也就是说,Msysgit已经发展了很多,在Windows中非常有用。我遇到了几个问题。

权限问题:在Windows中本机创建的一些文件具有模式755,在使用Msysgit时转换为644。这将显示为已修改的文件。签入应该解决这个问题。

CRLF:像往常一样难以捉摸的CRLF在Windows中造成问题。 Msysgit可能会将文件报告为已修改。这可以通过在安装Msysgit时选择“保持行结尾不变”(忘记确切的文本)来修复。

守护进程:是的,我仍然觉得很难在Msysgit中设置git守护进程。

答案 9 :(得分:1)

对旧问题的新答案......

我在Windows 7 cmd shell中使用git 1.7.3,效果很好。我使用了git命令行和git gui的混合,两者都运行了好几个月。我们确实有回车/换行问题,当我们将Mac开发人员添加到团队时会加剧,但这些问题已经解决了......

core.autocrlf=true
core.safecrlf=false

不是说你不应该使用* nix-y shell,只是没有必要。

答案 10 :(得分:0)

我对CygWin有所保留,因为我只想要git,而不是Cygwin想要推送的任何其他工具。通常你希望你的Windows计算机像Windows计算机一样工作而且CygWin想要打一些东西完全不同。拍摄* nix功能只是为了踢。

问题是,如果我想使用* nix之类的命令行,我会转到我的Linux机器上并在那台计算机上工作。 Virtual computersremote desktops现在就像魅力一样,对开发者来说足够了。

你需要有合理的理由使用CygWin。如果只是为了使用git,我建议您使用MSysGit而不是我的偏好。它与捆绑的gitk和git-gui工具配合得非常好。我一直在使用msysgit处理Eclipse和Visual Studio,它就像一个魅力。

我现在唯一要做的就是完全正常工作Tortoise clone for git

答案 11 :(得分:0)

在Windows下有一个场景,您只需 通过Cygwin使用Git:这是您希望对SVN服务器使用Git,这需要SVN客户端版本高于1.5。存在SVN预提交钩子,当没有'mergeinfo'参数时阻塞提交 - 并且'mergeinfo'参数在SVN中仅在1.5版之后是默认的。 The problem with msysGit is, that it is build against an older SVN version (1.4.6), so you can't successfully commit in this case.但Cygwin的Git有可能,因为它是针对较新的SVN版本构建的。

答案 12 :(得分:0)

如果您只想进行推/拉/分支等简单操作,可以尝试使用Atlasian的SourceTree。 Git命令的一个非常简单明了的用户界面。然而,它很短暂。

如果你需要使用命令行git工具,只需获取Git for windows工具。它应该足够了,除非你开始查看bash脚本。