【发布时间】:2011-03-09 19:33:46
【问题描述】:
msysgit 和 Cygwin + git 有什么区别?
现在我正在使用 msysgit,但我不喜欢 Git Bash(您无法调整大小或复制/粘贴),所以我正在考虑切换到 Cygwin,因为那时我可以使用 mintty。
【问题讨论】:
msysgit 和 Cygwin + git 有什么区别?
现在我正在使用 msysgit,但我不喜欢 Git Bash(您无法调整大小或复制/粘贴),所以我正在考虑切换到 Cygwin,因为那时我可以使用 mintty。
【问题讨论】:
如果你打算在 git bash 中做的不仅仅是 git 命令,我建议 Cygwin 和 git。
如果你打算在 git bash 中除了 git 命令什么都不做,那么 a) 当然,使用 git bash,但是 b) 为什么不直接使用 Git GUI?
Git bash 并没有那么糟糕,但是,有时我需要将 Cygwin 用于在 git bash 中根本不起作用的事情。 (例如 Perl CPAN。另一个是 XSL 工具。)不得不使用两个完全不同的 bash 命令行实现似乎真的很愚蠢。
【讨论】:
2018 年编辑:
自从我 2010-2012-2014 的回答以来,2015 年 Git for Windows 使用 msys2,就像我 detail here。
在“How are msys, msys2, and msysgit related to each other?”中查看更多信息。
编辑(2 年后:2014 年 10 月)
Johannes Schindelinjust explained(2014 年 10 月)msysgit 已被淘汰:
我们现在有一个适用于 Windows SDK 的轻量级 Git——它本质上是一个通过包管理器 mingw-get 管理的标准 MinGW/MSys 系统。
我们决定逐步淘汰“msysGit”这个名称(以及GitHub org of the same name)并且:
- 使用Git for Windows(使用corresponding GitHub org),
- 为面向“最终用户”的安装程序使用名称“Git for Windows”,并且
- 为面向 Windows 开发人员的 Git 开发环境使用名称“Git for Windows SDK”。
2 年后更新:2012 年 7 月
Msysgit 将继续存在,除非您需要add a few hundreds of MB for cygwin,否则您真的不需要 Cygwin 就可以在 Windows 上使用 Git。
如果你想访问 GitHub,你会得到一个带有 GitHub for windows 的包(“Git for Windows” + 在你的 GitHub 帐户上为你注册的 ssh 密钥 + 一个漂亮的 GUI)。
Git 和 msysgit 都在 GitHub 上。
msysgit.github.com 页面清楚地说明了两者之间的区别:
<---------->
“Git for Windows”:Git 的纯用户 | “MsysGit”:适用于测试人员、开发人员、自定义安装程序维护人员
“MSysGit”中的这个“MSys”是什么?
MSys 是一个 Windows 环境,提供 Unix 类型的 shell 和 Perl 解释器。由于 Git 的许多部分仍然不是用 C 编写的内置程序,而是用 shell 和 Perl 脚本编写的,所以 Windows 版 Git 需要这样的环境。
因此,我们为 Windows 提供了一个非常小的 MSys 版本的 Git。
构建 Git 也需要 MSys,因为我们重复使用上游 Git 使用的相同 Unix 类型设置。我们提供了一个更完整的 MSys 环境,包括 GCC,作为构建环境(因此昵称为“msysGit”)。
不过,我们将 Git 编译为纯 MinGW 程序,即除了标准 Windows 库之外没有任何链接依赖的程序。
因此,除非您需要使用仍然仅作为 shell 或 Perl 脚本实现的 Git 的任何部分,否则您可以运行普通的 git.exe。
原始答案:2010 年 6 月
a/ 您可以在 Git bash 中调整大小并复制粘贴,就像在任何其他 Windows Shell 中一样。
b/ 您可能正在使用“Git for windows”,而不是 msysgit。来自the wiki:
- msysGit 是为 Windows 编译 Git 的开发环境。它是完整的,你只需要安装 msysGit,然后你就可以构建 Git。无需安装任何第三方软件。
- Git for Windows 是一个安装 Git 的安装程序 - 并且只安装 Git。
很容易看出区别:
- Git 的安装程序具有前缀 Git-,
- msysGit 安装程序具有前缀 msysGit-。
另一个迹象是 msysGit 安装程序有两种形式:fullinstall 和 netinstall。
此外,msysGit 默认不会安装到C:\Program Files。
但是 msysGit 带有gcc,即 GNU C 编译器。
c/来自MSysGitHerald10:
记住:
- MinGW 确实是 Microsoft 运行时之上的一个非常薄的编译时层;因此,MinGW 程序是真正的 Windows 程序,没有 Unix 风格的路径或诸如
fork()调用之类的 POSIX 细节的概念。- 相比之下,MSys 是 Cygwin 的精简版本(当时是旧版本),其唯一目的是提供足够的 POSIX 层来运行 bash。
在 Windows 上工作时,我不喜欢 msysGit,顾名思义,它依赖于 MSYS 和来自 Unix 世界的工具。我相信 Git 发行版中的所有程序都应该成为为特定平台编译的二进制文件,而不是依赖 shell 解释器或 Tcl/Tk 等第三方语言。
尽管如此,它比 2007 年的第一批 Git on Cygwin 安装要好得多。
【讨论】:
Git-1.7.0.2-preview20100309.exe”)和 msysGit本身(Windows版Git的开发环境的安装程序:msysGit-netinstall-1.7.1-preview20100612.exe)。
C:\WINDOWS\system32\cmd.exe /c ""C:\Program Files\Git\bin\sh.exe" --login -i"。你的 Git bash 快捷方式指的是什么?当我打开这个窗口(有一个垂直的 Git 词作为徽标)时,我可以右键单击标题栏(上面有 MINGW32:~/.)并查看通常的上下文菜单(恢复/移动/大小/最小化/最大化/关闭/编辑/默认/属性)。您是否看到相同的上下文菜单?
这是 2018 年的答案...
MSYS2 最初的想法是重新启动 MSys 项目,经常使用 Cygwin 进行更新,并保持 MSys 的精神,提供一个非常精简的 POSIX 层,本质上是 Cygwin 的最低版本。 MSYS2 还具有包管理器 (pacman) 并能很好地保持这些包的最新状态。
..
MSYS2 的运行时是在 Windows 内核之上运行的精简、稍加修改的 Cygwin 运行时,而 Linux 的运行时是 Linux 内核,完全作为单独的操作系统运行。
https://github.com/git-for-windows/git/wiki
Cygwin 提供了一个名为 cygwin1.dll 的运行时库,它在必要时提供了 POSIX 兼容层。此库的 MSYS2 变体称为 msys-2.0.dll,包括以下更改以支持使用本机 Windows 程序:How does MSYS2 differ from Cygwin
【讨论】:
这是 2017 年的答案...
根本的技术区别是所有cygwin程序都依赖于cygwin1.dll;但这同时也是最终用户最不感兴趣的一个,因为它应该几乎是完全透明的。我发现的主要区别并不在于 git 版本之间,而在于 cygwin 环境和 msys/mingw 环境之间。这些是我发现的一些差异:
-noacl 选项挂载。在 cygwin 中也这样做似乎可以避免这些问题。git status 使用 cygwin 需要 4.7 秒,使用 msys git 需要 0.4 秒。我不确定 cygwin 兼容层的哪一部分正在减慢速度——锁、分叉、文件系统、IPC……它们都是候选者。cygpath 在两个世界之间努力转换文件名。当脚本等与 Windows 程序交互时,这将发挥重要作用。编辑:通过一些小的调整,可能并不明显可以在 cygwin 和 Msys2 之间共享 git(但不仅是 git)的通用设置。如果我没记错的话,一个好方法是在 Windows 系统设置中设置 HOME 环境变量;那么 Msys2 和 cygwin 都将使用该目录并因此使用相同的点文件,其中包括 ~/.gitignore。这使得在 cygwin 和 Msys2 终端之间进行更改非常轻松(想想~/.inputrc、~/.bashrc、~/.profile...)。
【讨论】:
cygwin 以 windows 格式查看本地文件,而 git-bash 以 unix 格式查看它们。如果您在 git-bash 中签出文件,然后在 cygwin shell 上运行 git status,git 认为您已经修改了 repo 中的每一行,如果您在 git-bash shell 中运行 git status,那么只有您接触过的文件被修改。
【讨论】:
/etc/fstab 文件中的某些路径使用挂载选项 text 进行自动行尾转换)。如何保留行尾也取决于您的编辑器;除了 cygwin 之外,现代的也可以在这方面进行配置。我正在并行使用 cygwin 和 windows git,现在它工作正常。
Msysgit 已经收到了许多补丁来处理 Windows 特定的问题,例如文件系统不区分大小写、文件锁定等。使用 cygwin 版本可能是个坏主意。如果您的系统上有 cygwin,我建议您根本不要安装 git,最好不要从同一 PATH 共享 msysgit 或 cygwin 环境。
【讨论】:
MSysGit 附带一个非常旧的 SSH 版本。我的系统的吞吐量约为 10 mbit。如果您不关心克隆速度,那么这不会影响您。解决方法是运行 Cygwin Git 或 replace the SSH installed in MSysGit。
【讨论】:
cygwin + git 是让 git 回到过去的唯一方法。现在有了 msysgit,我看不出有任何理由使用 cygwin。
我同意 git bash 不是那么好.. 所以我要做的是
【讨论】:
cygwin 上的当前 git 版本是 1.7.5.1,非常非常新(2011 年 5 月)。
我认为(到目前为止)没有理由使用其他任何东西,但我正在考虑尝试使用 msysgit(又名“Git for Windows”)(当前版本为 1.7.4)。
【讨论】:
msysgit 中的 bash 实现是旧的。但是,我在编辑时使用 vim,效果很好。至于剪切和粘贴,我经常使用 SHIFT+ALT+[空格]、E、M 或任何键来标记我想要的文本。不理想,但做得足够好,因为我不会过多地剪切和粘贴。
我现在已经开始通过 VirtualBox 在同一台机器上运行 Ubuntu。通过无缝模式和共享文件夹,我可以利用最新的 bash 和快速的 Git。
如果需要,我不使用任何用于 Git 的 gui 工具,除了 gitk(用于 gitk --all)来可视化历史记录。
我试过 cygwin 但不喜欢它。如果 msysgit 对你不够用,虚拟盒子解决方案会好得多。
【讨论】: