我计划将我的项目迁移到 git,我目前想知道在 windows 下哪个是最好和/或最稳定的选项。
据我所知,我基本上有 2.5 个选项:
注意:IMO Cygwin 本身就是一大优势,因为您可以访问几乎所有的 *nix 命令行工具,就像使用 MSYSgit bash 一样,您只能访问这些工具的一小部分。
鉴于此,你会建议什么选择?
编辑(2 年后:2014 年 10 月)
Johannes Schindelin 刚刚解释(2014 年 10 月)msysgit 已被淘汰:
我们现在有一个用于 Windows SDK 的轻量级 Git——它本质上是一个通过包管理器 mingw-get 管理的标准 MinGW/MSys 系统。
我们决定逐步淘汰名称“msysGit”(以及同名的 GitHub org )并使用适用于 Windows 的 Git(以及相应的 GitHub org),并使用名称“Git for Windows”作为目标安装程序在“最终用户”和“Git for Windows SDK”中,针对面向 Windows 开发人员的 Git 开发环境)。
编辑(3 年后:2012 年 4 月)
如果你想在 Git 世界中轻量级快速启动, MsysGit(现在在 GitHub 上)是你要走的路:解压缩存档,启动,git-cmd.bat
或者git-bash.bat
你就完成了。
它的最新版本(1.7.10,2012 年 4 月)现在包括对 UTF-8 的支持,也包括在 GitExtension 中。不要忘记将您的设置autocrlf
为 false。
如果您确实缺少所有其他 unix 命令而不是 msysgit 软件包,只需下载一个GoW 版本(Windows 上的 Gnu),恰当地命名为“Cygwin 的轻量级替代品”。
我的意思是:130个unix命令...
Cygwin 应该是仅适用于某些情况的备份解决方案,例如大型Git 存储库的传输速度,如下面的incrementor在他的回答中提到的。
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 因为它会包含 finally ' git filter-branch
' 命令!(过滤器分支的慢版本,但仍然)。
对于 Unix 命令,我更喜欢安装GnuWin32 coreutils 包,并且仅在需要时使用它们。
所以总而言之,我不使用 Cygwin 层,并在其基于 Windows 的版本 MsysGit 中很好地运行了 Git。
Yes. Old question. New answer:
We have been using MSYSgit for about 2 years now in a large deployment. The speed of transfers from a local git repository server have been limited to less than 5 MiB/s. Earlier investigation into the issue indicated that the problem was with MSYS devs being on Windows XP and Windows 7 security limiting connections from command prompt/bash shell. This does not appear to be, in fact, the problem.
I discovered Darrell Mozingo's blog posting and tested a clone of a large (many GiB) repo using only a Cygwin install. Transfer speeds were in the 30 MiB/s range. The problem is that MSYSgit uses an antique OpenSSH binary from 2007.
To this end, until that gets fixed, I am now recommending a shift to Cygwin (even though the version of git is a bit behind). I also found Cygwin to be more stable and less likely for perl to run out of memory.
我已经尝试过使用 MSYS 和 Cygwin 版本的 git,老实说,我没有发现这两种体验特别好。我只是认为 git 还没有真正为 Windows 做好准备。
话虽如此,我在 MSYS 版本中发现的一个问题是,它将(非二进制)文件的行尾从 UNIX 样式(换行)转换为 DOS 样式(回车/换行)。您可能认为这是一个错误或一个功能,但没有办法改变我能找到的行为。(编辑:将配置变量设置core.autocrlf
为false
。谢谢布赖恩。)
OTOH,MSYS 版本的 git 具有一些在 cygwin 版本中不可用的 GUI 功能,除非您想安装和运行整个 X 服务器。(感谢乔斯确认这一点。)
我的印象是 MSYS 版本更受欢迎,虽然这可能是因为你不需要安装 cygwin 生态系统来使用它。(我同意,cygwin 非常有用。)
Cygwin 和 Msys Git 都适用于正常用例。如果你想使用 git-svn 等脚本,Cygwin 是一个更好的选择。作为一个最终跳槽到 Linux 的老 Windows 用户,我可以肯定地说 Cygwin 是一个巨大的福音,它本身就值得拥有。
上下文很重要;这些是什么项目?它们被谁使用?等等。
我还测试了两个世界(CygWin 和 MSysgit),我的经验也是 MSysgit bash 存在一些缺点。Cygwin 在同一个 git 存储库上优雅地处理它时,无法成功运行 git stash。
虽然还没有进行深入的分析...
我目前将 Msysgit 与 TortoiseGit 一起使用。
MsysGit UI 并不是我真正喜欢的,所以我使用了一个熟悉的工具,比如 TortoiseGit,在命令行上工作时(大部分时间),我使用来自 Msysgit 的 git 二进制文件
我会推荐 msysgit。特别是如果它与Git Extensions一起使用:它提供了配置环境的简单方法:编辑器/差异/合并工具,并允许从用户界面执行高级 git 操作。
我在 Windows 上使用过 Cygwin Git 和 Msysgit。我建议使用 Cygwin + Git。Cygwin 1.7(目前处于测试阶段)在使用 git gui 和 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 守护进程很困难。
旧问题的新答案...
我在 Windows 7 cmd shell 中使用 git 1.7.3,效果很好。我混合使用了 git 命令行和 git gui,几个月来都运行良好。我们确实遇到了回车/换行问题,当我们将 Mac 开发人员添加到团队中时,问题更加严重,但这些问题已经通过......
core.autocrlf=true
core.safecrlf=false
并不是说您不应该使用 *nix-y shell,只是说没有必要。
我在 MSys 的 cygwin 实现中遇到了严重的错误:一些命令,尤其是 rebase,很容易失败。Cygwin的对我来说更稳定。
也就是说,这是一个月前的事了,从那以后可能会有所改善。
如果您只想执行简单的操作,例如推/拉/分支,您可以尝试 Atlasian 的 SourceTree。一个非常简单明了的 Git 命令用户界面。然而,它有不足之处。
如果您需要使用命令行 git 工具,只需获取 Git for windows 工具即可。这应该足够了,除非您开始查看 bash 脚本。
我对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' 参数仅在 1.5 版后才在 SVN 中为默认值。msysGit 的问题在于,它是针对较旧的 SVN 版本(1.4.6)构建的,因此在这种情况下您无法成功提交。但是使用 Cygwin 的 Git 是可能的,因为它是针对较新的 SVN 版本构建的。