msysgit和Cygwin + git的区别?

msysgit和Cygwin + git有什么区别?

现在我使用的是msysgit,但是我不喜欢Git Bash(你不能resize或者复制/粘贴),所以我想着考虑切换到Cygwin,因为那样我就可以使用mintty了 。

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

Johannes Schindelin 刚才解释说 (2014年10月) msysgit已经被淘汰

我们现在有一个Windows SDK轻量级Git,它本质上是一个通过包pipe理器mingw-getpipe理的标准MinGW / MSys系统。

我们决定只淘汰名称“msysGit”(以及同名的GitHub组织 )和:

  • Git for Windows上工作(使用相应的GitHub组织) ,
  • 使用名为“ Git for Windows ”的安装程序针对“最终用户”和
  • 使用“ Git for Windows SDK ”作为针对Windows开发人员的Git开发环境)。

两年后更新:2012年7月

Msysgit就在这里,除非你需要 为Cygwin添加几百MB ,否则你真的不需要Cygwin在Windows上使用Git。
如果你想访问GitHub,你可以用GitHub for windows获得一个包(“Git for Windows”+ ssh密钥在你的GitHub帐户上注册+一个很好的GUI)。

Git和msysgit都在GitHub上。
msysgit.github.com页面清楚地说明了以下区别:

Git for Windows标志 <----------> MsysGit标志
Git for Windows ”:Git |的纯用户 “ MsysGit ”:用于testing人员,开发人员,自定义安装程序维护人员

另请参阅msysgit常见问题解答 :

“MSysGit”中的这个“MSys”是什么?

MSys是一个Windows环境,提供一个Unixtypes的shell和一个Perl解释器。 因为Git的许多部分仍然不是用C语言编写的,而是shell和Perl脚本,所以Git for Windows需要这样一个环境。

因此,我们用Windows的Git发布了一个非常小版本的MSys。

MSys也需要构buildGit,因为我们重复使用Git使用的相同的Unixtypes设置。 我们发布了一个更完整的MSys环境,包括GCC,作为编译环境(因此被命名为“msysGit”)。

我们把Git编译成一个纯粹的MinGW程序,也就是说,一个没有任何链接依赖的程序,除了标准的Windows库之外。
所以除非你需要使用Git的任何部分,这些部分仍然只能作为shell或者Perl脚本来实现,那么你可以使用普通的git.exe。


原始答案:2010年6月

a /您可以在Git bash中resize和复制粘贴,就像在其他任何Windows Shell中一样。

b /你可能使用“Git for windows”,而不是msysgit。 来自wiki :

  • msysGit是为Windows编译Git的开发环境 。 它是完整的,从某种意义上说,你只需要安装msysGit,然后你就可以构buildGit。 无需安装任何第三方软件。
  • Git for Windows是一个安装Git的安装程序 – 只有Git

很容易看出不同之处:

  • Git的安装程序有前缀Git-,
  • msysGit安装程序具有前缀msysGit-。

另一个信息是,msysGit安装程序有两种:fullinstall和netinstall。
此外,msysGit默认不安装到C:\Program Files
但是msysGit自带了GNU C编译器gcc

c /来自MSysGitHerald10 :

记得:

  • MinGW实际上是微软运行时间的一个非常简单的编译时间层; 因此,MinGW程序是真正的Windows程序,没有Unix风格的path或fork()调用等POSIX细节的概念。
  • 相比之下,MSys是Cygwin的瘦身版本(旧版本),其唯一目的是提供足够的POSIX层来运行bash。

这并不总是受欢迎的 :

在Windows上工作时,我不喜欢msysGit,顾名思义,依赖于MSYS和Unix世界的工具。 我相信Git发行版中的所有程序都应该成为针对特定平台编译的二进制文件,而不是依赖于shell解释器或Tcl / Tk等第三方语言。

尽pipe如此,它远远好于2007 年Cygwin安装的第一个Git 。

cygwin + git是让git在当天重新运行的唯一方法。 现在msysgit是在附近,我没有看到任何理由使用cygwin。

我同意git bash不是那么好..所以我做的是

  1. 把git放在path中,当我需要命令行的时候使用窗口命令提示符
  2. 当我想要一个GUI到我的git时,安装了龟git

MSysGit附带一个非常旧的SSH版本。 我的系统吞吐量大约是10兆位。 如果你不关心克隆速度,那么这不会影响你。 解决办法是运行Cygwin Git或replaceMSysGit中安装的SSH 。

这是从2017年的答案…

基本的技术差异是所有的cygwin程序都依赖于cygwin1.dll; 但对于最终用户来说,这也是最不感兴趣的,因为它应该几乎是完全透明的。 我发现的主要区别不在于git版本和cygwin环境和msys / mingw环境之间。 这些是我发现的一些差异:

  • ACL处理。 更新(2015年后)cygwins处理NTFS访问控制列表的方式可能是恼人的危险点。 默认情况下,Windows驱动器使用acl选项处于活动状态。 Cygwin试图通过重新洗牌和滥用ACL条目来模仿POSIX权限,使得通过本地Windows程序的访问变得不可能。 此外,由于networking访问,多用户多域(即商业或机构)安装中的文件访问速度可能急剧下降,因为确定用户和权限可能需要对每个文件进行域服务器查询。

    msys默认挂载-noacl选项。 在cygwin中这样做似乎也避免了这些问题。

  • 速度。 我目前正在一个有100k文件的仓库(不要问)。 caching中所有相关磁盘内容的git status在cygwin上为4.7秒,在msys git上为0.4秒。 我不确定cygwin兼容性层的哪一部分正在放慢速度 – 锁,叉,文件系统,IPC …他们都是候选人。
  • 潜在的文件名。 我没有调查的问题,但我会怀疑git(和其他工具)针对Windows(如msys git)可以更好地处理Windows文件的名称。 在cygwin下,必须通过两个世界之间的cygpath努力转换文件名。 当脚本等与Windows程序接口时,这将起到重要的作用。

msysgit中的bash实现是旧的。 不过,我在编辑时使用vim,而且效果很好。 至于剪切和粘贴,我经常诉诸SHIFT + ALT + [空格],E,M或任何键来标记我想要的文字。 不理想,但做得不错,因为我不会剪切和粘贴太多。

我现在已经开始通过VirtualBox在同一台机器上运行Ubuntu。 使用无缝模式和共享文件夹,我可以利用最新的bash和快速的Git。

我不使用任何GUI工具的Git,除了gitk(用于gitk – 所有)来可视化历史,如果我需要。

我试过cygwin,不喜欢它。 如果msysgit对你来说是不够的,那么虚拟盒子的解决scheme会更好。

当前版本的git在cygwin上是1.7.5.1,非常非常stream行(2011年5月)。

我看到没有任何理由(迄今)使用其他任何东西,虽然我正在考虑给msysgit(又名“Git的Windows”)试一试(目前版本1.7.4)。

Msysgit已经收到了许多补丁来处理Windows特定的问题,如文件系统不区分大小写,文件locking等。使用cygwin版本可能是一个坏主意。 如果你的系统上有cygwin,我build议不要安装git,最好不要在同一个PATH中共享msysgit或者cygwin环境。

cygwin以windows格式查看本地文件,而git-bash以unix格式查看它们。 如果你在git-bash中签出文件,然后在cygwin shell上运行git status,那么git认为你已经修改了repo中的每一行,如果你在git-bash shell中运行git status,那么只有你触及的文件被修改了。