我计划将我的项目迁移到git,而我目前想知道哪个是Windows下最好和/或最稳定的选项。
从我收集到的信息来看,我基本上有2.5个选择:
注意:IMO Cygwin本身就是一个很大的优点,因为您可以访问几乎所有的* nix命令行工具,就像使用MSYSgit bash一样,您只能访问这些工具的一小部分。
鉴于此,您会建议什么选择?
Answers:
编辑(两年后:2014年10月)
Johannes Schindelin 刚刚解释(2014年10月)逐步淘汰了msysgit:
我们现在有一个用于Windows SDK的轻量级Git –本质上是一个标准的MinGW / MSys系统,通过软件包管理器mingw-get管理。
我们决定出了名的“msysGit”只是相(以及在GitHub的组织同名)和工作在GIT中的Windows(与相应的GitHub的组织),并使用名为“混帐的Windows”的安装目标针对面向Windows开发人员的Git的开发环境,请访问“最终用户”和“ Windows SDK的Git”)。
编辑(3年后:2012年4月)
如果您想在Git世界中实现轻量级的快速入门,则可以使用MsysGit(现在在GitHub上):解压缩存档,启动git-cmd.bat
或git-bash.bat
完成。
其最新版本(2012年4月1.7.10)现在包括对UTF-8的支持,该支持也包含在GitExtension中。但是不要忘记将您的设置autocrlf
为false。
如果您真的错过了所有其他unix命令而不是msysgit附带的软件包,只需下载一个GoW版本(在Windows上为Gnu),将其恰当地命名为“ Cygwin的轻量级替代品”。
我的意思是:130 UNIX命令集...
Cygwin仅应在某些情况下用作备份解决方案,例如大型Git存储库的传输速度,如增量器在其答案中所述。
2012年6月:如果您想与GitHub进行交互,则现在拥有http://windows.github.com(另请参见“为Windows设计GitHub ”)。
它不仅会为您配置ssh密钥(并将生成的公共密钥添加到您的GitHub个人资料中),而且还将为所有git操作安装一个... MsysGit。
原始答案(2009年4月)
我对最新版本的MsysGit没问题:
我使用选项2,这意味着我仅将git \ bin目录添加到PATH环境变量中,而没有覆盖某些内置Windows工具。
我设法定义了外部工具,例如Notepad ++和WinMerge(或DiffMerge)
我确实成功运行了svn2git之类的脚本,因为从MsysGit1.6.2 +起,该脚本确实包含“git svn
'命令。
最后,我期待着MsysGit1.6.2.3,因为它将最终包含' git filter-branch
'命令!(过滤器分支的慢版本,但仍然)。
对于Unix命令,我更喜欢安装GnuWin32 coreutils软件包,并仅在需要它们时使用它们。
因此,总的来说,我不使用Cygwin层,而是设法在基于Windows的MsysGit版本中很好地运行Git。
是。老问题。新答案:
在大型部署中,我们已经使用MSYSgit大约两年了。来自本地git存储库服务器的传输速度已限制为小于5 MiB / s。对该问题的早期调查表明,问题出在Windows XP和Windows 7上的MSYS开发人员,它们限制了命令提示符/ bash shell的连接。实际上,这似乎不是问题。
我发现了Darrell Mozingo的博客文章,并仅使用Cygwin安装程序测试了一个大型(许多GiB)存储库的克隆。传输速度在30 MiB / s范围内。问题在于,MSYSgit使用了2007年以来的旧版OpenSSH二进制文件。
为此,在解决此问题之前,我现在建议转换为Cygwin(即使git的版本稍晚一些)。我还发现Cygwin更稳定,并且不太可能使perl耗尽内存。
我曾经尝试过同时使用MSYS和Cygwin版本的git,说实话,我发现两者的体验都不是很好。我只是不认为git真的已经为Windows准备好了。
话虽这么说,我发现MSYS版本的一个问题是它将(非二进制)文件上的行尾从UNIX样式(换行)转换为DOS样式(回车/换行)。您可能会认为这是一个错误或功能,但是无法更改我可以找到的行为。(编辑:将配置变量设置core.autocrlf
为false
。感谢Brian。)
OTOH,git的MSYS版本具有某些GUI功能,而cygwin版本不具备此功能,除非您要安装并运行整个X服务器。(感谢乔斯确认这一点。)
我的印象是MSYS版本更受欢迎,尽管那可能是因为您不需要安装cygwin生态系统即可使用它。(我同意,cygwin非常有用。)
Cygwin和Msys Git在正常使用情况下都可以很好地工作。如果您想使用git-svn之类的脚本,那么Cygwin是更好的选择。作为最终使用Linux的老Windows用户,我可以肯定地说Cygwin是一个巨大的福音,值得一试。
上下文很重要;这些是什么项目?他们被谁使用?等等。
我建议msysgit。尤其是与Git Extensions一起使用时:它提供了配置环境的简便方法:编辑器/差异/合并工具,并允许从用户界面执行高级git操作。
我在MSys的cygwin实现中遇到了严重的错误:某些命令(尤其是rebase)非常容易失败。Cygwin的对我来说更稳定。
也就是说,这是一个月前,此后可能会有所改善。
我在Windows上同时使用了Cygwin Git和Msysgit。我建议使用Cygwin + Git。Cygwin 1.7(当前为Beta版)在使用git gui和gitk时解决了一个主要的细微差别(至少对我而言)。每次我在git-gui或gitk中执行某些操作时,Cygwin的早期版本都会打开10多个cmd窗口。这已在1.7中解决。Cygwin强大的外壳也带来了很多Linux终端的好处。
也就是说,Msysgit已经发展了很多,并且在Windows中非常有用。我虽然遇到了两个问题。
权限问题:在Windows中本机创建的一些文件的模式为755,在使用Msysgit时已转换为644。这将显示为修改后的文件。签入应解决此问题。
CRLF:像往常一样难以捉摸的CRLF在Windows中会产生问题。Msysgit可能报告文件已修改。这可以通过在安装Msysgit时选择“保留行尾不变”(忘记确切的文本)来解决。
守护进程:是的,我仍然很难在Msysgit中设置git守护进程。
我对CygWin有所保留,因为我只想要git,而不希望Cygwin想要使用的其他任何工具。通常,您希望Windows计算机像Windows计算机一样工作,而CygWin希望使用完全不同的东西。仅仅为了踢一下* nix功能而已。
问题是,如果我想像命令行一样使用* nix,我会转到我的Linux机器上,然后在那台计算机上工作。虚拟计算机和远程桌面如今的魅力十足,对开发人员来说足够容易使用。
使用CygWin确实有正当的理由。如果仅用于git,建议您使用MSysGit代替。它与捆绑的gitk和git-gui工具一起很好地工作。我一直在使用msysgit进行Eclipse和Visual Studio的开发,它的工作原理很吸引人。
我现在唯一需要等待的是git的完全可用的Tortoise克隆。
Windows下有一种情况,您只需 需要通过Cygwin使用Git:这是当您想在SVN服务器上使用Git时,期望SVN客户端版本高于1.5。存在SVN预提交钩子,该钩子在没有'mergeinfo'参数时阻止提交-并且'mergeinfo'参数在SVN中是默认的,仅从1.5版开始。msysGit的问题在于,它是根据较早的SVN版本(1.4.6)构建的,因此在这种情况下您无法成功提交。但是Cygwin的Git是可能的,因为它是针对较新的SVN版本构建的。