代码之家  ›  专栏  ›  技术社区  ›  joce

Windows下的Git:msys还是cygwin?

  •  80
  • joce  · 技术社区  · 15 年前

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

    据我所知,我基本上有2.5个选择:

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

    注意:imo cygwin本身就是一个很大的优势,因为您可以访问几乎所有的*nix命令行工具,就像使用msysgit bash时,您只能访问这些工具中相当小的一个子集一样。

    考虑到这一点,你会建议什么选择?

    13 回复  |  直到 10 年前
        1
  •  60
  •   Community CDub    7 年前

    编辑(两年后: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 sdk”作为针对git for windows开发人员的开发环境)。


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

    MsysGit(现在) on GitHub )如果你想在Git World中实现一个轻量级的快速启动,是一条捷径:解压归档文件,启动 git-cmd.bat git-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

    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 !(过滤器分支的缓慢版本,但仍然如此)。

    对于unix命令,我更喜欢安装 GnuWin32 coreutils package 只有在我需要的时候才使用它们。

    总之,我没有使用cygwin层,并且在基于Windows的版本msysgit中成功地运行了git。

        2
  •  15
  •   incrementor    13 年前

    对。老问题。新答案:

    我们已经使用msysgit大约2年了,现在已经进行了大规模部署。本地Git存储库服务器的传输速度被限制在5 mib/s以下。早期对该问题的调查表明,问题出在Windows XP和Windows 7上的msys devs限制了来自命令提示符/bash shell的连接。事实上,这似乎不是问题所在。

    我发现 Darrell Mozingo's blog posting 并且只使用cygwin安装测试了一个大型(多GiB)回购的克隆。传输速度在30 mib/s范围内。问题是,msysgit使用了一个从2007年开始的古董openssh二进制文件。

    为了达到这个目的,在这个问题得到解决之前,我现在建议换成Cygwin(尽管Git的版本有点落后)。我还发现Cygwin更稳定,Perl内存不足的可能性更小。

        3
  •  9
  •   Evan    15 年前

    我曾经尝试过使用msys和cygwin两个版本的git,老实说,我觉得这两种体验都不是特别好。我只是觉得Git还没有为Windows做好准备。

    也就是说,我在MSYS版本中发现的一个问题是,它会将(非二进制)文件的行尾从UNIX样式(换行)转换为DOS样式(回车/换行)。您可能认为这是一个bug或特性,但是没有办法改变我能找到的行为。(编辑:设置配置变量 core.autocrlf false . 谢谢布瑞恩。

    另外,Git的MSYS版本具有一些在Cygwin版本中不可用的GUI功能,除非您想安装并运行一个完整的X服务器。(感谢Joce确认。)

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

    就个人而言,我也会选择 Bazaar Mercurial 对Windows IMO有更好的支持。

        4
  •  7
  •   Edward Z. Yang    15 年前

    对于正常的用例,cygwin和msys-git都工作得相当好。如果您想使用git-svn等脚本,cygwin是一个更好的选择。作为一个最终转向Linux的老Windows用户,我可以肯定地说,Cygwin是一个巨大的好处,值得拥有它本身。

    然而,背景很重要;这些是什么项目?他们是谁用的?等。

        5
  •  6
  •   PatrikS    15 年前

    我还测试了两个世界(cygwin和msysgit),我的经验也是msysgit bash中存在一些缺陷。当Cygwin在同一个Git报表上优雅地处理Git存储时,无法成功运行Git存储。

    但是还没有做深入的分析…

        6
  •  4
  •   Tigraine    15 年前

    我现在使用msysgit和tortoisegit。

    msysgit用户界面并不是我真正喜欢的,所以我使用了一个熟悉的工具,比如tortoisegit,在使用命令行时(大多数时候),我使用msysgit中的git二进制文件。

        7
  •  3
  •   Konstantin Tenzin    14 年前

    我会重新推荐Sysgit女士。尤其是与 Git Extensions :它提供了配置环境的简单方法:editor/diff/merge工具,并允许从用户界面执行高级git操作。

        8
  •  1
  •   Alex Gontmakher    15 年前

    我在msys的cygwin实现中遇到了严重的错误:一些命令,特别是rebase,非常容易失败。对我来说,塞格温的情况要稳定得多。

    也就是说,这是一个月前的事了,之后可能有所改善。

        9
  •  1
  •   Jon    15 年前

    我在Windows中使用了cygwin-git和msysgit。我建议使用cygwin+git。Cygwin1.7(目前是beta版本)在使用GitGUI和GitK时解决了一个主要的细微差别(至少对我来说是这样)。以前的cygwin版本每次我在git-gui或gitk中做一些事情时都会打开10秒的cmd窗口。这已在1.7中解决。Cygwin强大的shell也带来了许多Linux终端的好处。

    也就是说,msysgit已经发展了不少,在Windows中非常有用。不过,我面临着几个问题。

    权限问题:一些在Windows中本机创建的文件有755模式,在使用msysgit时转换为644模式。这将显示为修改过的文件。签入可以解决此问题。

    CRLF:所有难以捉摸的CRLF通常会在Windows中创建问题。msysgit可能报告文件已修改。这可以通过在安装msysgit时选择“保持行尾不变”(忘记确切的文本)来解决。

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

        10
  •  1
  •   yoyo    14 年前

    旧问题的新答案…

    我使用的是来自Windows7Cmd外壳的Git1.7.3,它工作得很好。我使用的是git命令行和git gui的组合,这两个命令行已经运行了好几个月了。我们确实有回车/换行问题,当我们将Mac开发人员添加到团队中时,问题恶化了,但这些问题是通过……

    core.autocrlf=true
    core.safecrlf=false
    

    不是说你不应该使用一个尼克斯-Y外壳,只是它不是必要的。

        11
  •  0
  •   Spoike Otávio Décio    15 年前

    我预订了 CygWin 因为我只想要Git,而不是Cygwin想要插入的任何其他工具。通常情况下,你希望你的Windows电脑像Windows电脑一样工作,而Cygwin想要拍出完全不同的东西。仅仅为了刺激而使用*nix功能是不可行的。

    问题是,如果我想使用类似于*nix的命令行,我会转到我的Linux机器,在那台计算机上工作。 Virtual computers remote desktops 现在的工作方式很有魅力,开发人员可以很方便地使用它。

    你真的需要一个合理的理由来使用Cygwin。如果只是为了使用git,我建议您使用 MSysGit 相反,这是我的偏好。它与捆绑在一起的Gitk和GitGUI工具配合得非常好。我一直在使用msysgit在Eclipse和Visual Studio上工作,它的工作方式很有魅力。

    我现在唯一等待的是一个全面的工作 Tortoise clone for git .

        12
  •  0
  •   ufo    12 年前

    在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版本构建的。

        13
  •  0
  •   thoroc    10 年前

    如果你只想做一些简单的操作,比如推/拉/分支,你可以尝试使用来自Atlasian的sourcetree。一个非常简单和清晰的git命令用户界面。然而,它也有不足之处。

    如果需要使用命令行git工具,只需获取用于Windows的git工具。这应该足够了,除非您开始研究bash脚本。

    推荐文章