Windows下的Git:MSYS还是Cygwin?


80

我计划将我的项目迁移到git,而我目前想知道哪个是Windows下最好和/或最稳定的选项。

从我收集到的信息来看,我基本上有2.5个选择:

  1. MSYSgit
  2. git下 Cygwin
  3. (aka 2.5)来自Cygwin提示符的MSYSgit(假设已经安装了Cygwin git)。

注意:IMO Cygwin本身就是一个很大的优点,因为您可以访问几乎所有的* nix命令行工具,就像使用MSYSgit bash一样,您只能访问这些工具的一小部分。

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

Answers:


60

编辑(两年后: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.batgit-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。


我也使用p4merge,这很酷。我读过git和unicode文件名有问题。
Benjol

感谢您链接到core.editor设置问题。(我尝试将Notepad ++与-nosession和-multiInst等命令行开关一起使用)
mbx

这个答案并没有真正回答为什么一个人会使用另一个。国际海事组织(IMO)下方有更好的答案
塞巴斯蒂安·马丁

@SebastienMartin在这种情况下,您应该向OP(Joce)提及。否则,不会通知他应该选择的更好答案。
VonC 2012年

@SebastienMartin我已经用更多当前信息更新了此旧答案。
VonC 2012年

15

是。老问题。新答案:

在大型部署中,我们已经使用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耗尽内存。


看起来MinGW使用的是OpenSSH 5.4,该版本来自2010年
Steven Penny

9

我曾经尝试过同时使用MSYS和Cygwin版本的git,说实话,我发现两者的体验都不是很好。我只是不认为git真的已经为Windows准备好了。

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

OTOH,git的MSYS版本具有某些GUI功能,而cygwin版本不具备此功能,除非您要安装并运行整个X服务器。(感谢乔斯确认这一点。)

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

就个人而言,我会选择BazaarMercurial,它们对Windows IMO的支持都更好。


3
对于Windows上的Git问题,Bazaar也是我的解决方案。嘿。
个体猎人

9
您可以关闭行尾翻译。您只需要将core.autocrlf设置为false。
布赖恩·坎贝尔

1
我们目前正在检查选项,以选择DCVS。水星在清单上。但是,分支的成本,特别是对于非常大的项目,是相当昂贵的。Cygwin dist带有GUI前端(以运行X服务器为代价)。但是,我不完全确定它会增加多少价值。
09年

3
我正在使用msys版本,并且没有遇到任何问题。
Ikke

2
我认为最新版本的msys要求您配置安装时如何处理行尾。
刘坚

7

Cygwin和Msys Git在正常使用情况下都可以很好地工作。如果您想使用git-svn之类的脚本,那么Cygwin是更好的选择。作为最终使用Linux的老Windows用户,我可以肯定地说Cygwin是一个巨大的福音,值得一试。

上下文很重要;这些是什么项目?他们被谁使用?等等。


2
我们正在谈论的是一个相当小的团队(约10个编)开发的一个相当大的项目(32K +源文件)。并不是所有的人都具备熟练的nix环境,但是git在日常使用中的简单性看起来很有希望。我们还计划使用很多分支,例如一个P4更改列表<=>一个git分支。仅出于这个原因,例如git比Hg更有趣。我对Cygwin与MSYS的担心是Cygwin版本不是MSYS的最新版本。
09年

6

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

尚未进行深入分析,但是...


4

我目前将Msysgit与TortoiseGit一起使用。

MsysGit UI并不是我真正喜欢的,所以我使用了熟悉的工具,例如TortoiseGit,并且在命令行上工作时(大部分时间),我使用了Msysgit的git二进制文件


3

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



1

我在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守护进程。


1

对一个老问题的新答案...

我正在Windows 7 cmd shell中使用git 1.7.3,它的工作原理很棒。我混合使用了git命令行和git gui,并且两个月都工作良好。我们确实有回车/换行的问题,当我们向团队中添加Mac开发人员时,这一问题更加严重,但是这些问题已通过...解决。

core.autocrlf=true
core.safecrlf=false

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


0

我对CygWin有所保留,因为我只想要git,而不希望Cygwin想要使用的其他任何工具。通常,您希望Windows计算机像Windows计算机一样工作,而CygWin希望使用完全不同的东西。仅仅为了踢一下* nix功能而已。

问题是,如果我想像命令行一样使用* nix,我会转到我的Linux机器上,然后在那台计算机上工作。虚拟计算机远程桌面如今的魅力十足,对开发人员来说足够容易使用。

使用CygWin确实有正当的理由。如果仅用于git,建议您使用MSysGit代替。它与捆绑的gitk和git-gui工具一起很好地工作。我一直在使用msysgit进行Eclipse和Visual Studio的开发,它的工作原理很吸引人。

我现在唯一需要等待的是git的完全可用的Tortoise克隆


而且似乎至少在3/13/17时Cygwin的速度为2.8.3 git,更新时我遇到了一些Perl问题。Git Bash MinGW为2.12。
标记

0

Windows下有一种情况,您只需 需要通过Cygwin使用Git:这是当您想在SVN服务器上使用Git时,期望SVN客户端版本高于1.5。存在SVN预提交钩子,该钩子在没有'mergeinfo'参数时阻止提交-并且'mergeinfo'参数在SVN中是默认的,仅从1.5版开始。msysGit的问题在于,它是根据较早的SVN版本(1.4.6)构建的,因此在这种情况下您无法成功提交。但是Cygwin的Git是可能的,因为它是针对较新的SVN版本构建的。


0

如果您只想执行推/拉/分支之类的简单操作,则可以尝试Atlasian的SourceTree。Git命令非常简单明了的UI。但是,它很快就会到来。

如果您需要使用命令行git工具,只需获取Windows版Git工具即可。除非您开始寻找bash脚本,否则就足够了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.