适用于 Windows 的 Git-scm、msysGit 和 Git 之间的区别

Posted

技术标签:

【中文标题】适用于 Windows 的 Git-scm、msysGit 和 Git 之间的区别【英文标题】:Differences between Git-scm, msysGit & Git for Windows 【发布时间】:2014-04-14 03:17:24 【问题描述】:

git-scm(从 git-scm.com 下载)和 msysGit(托管在 Google Code、Github 和可能的其他服务器上)之间有什么区别?它们看起来都非常相似,即使我有 git-scm,我也应用了为 msysGit 指定的修复程序,它们似乎工作正常。

另外,如果有的话,哪一个是Git for Windows,并且都称为Git Bash,或者两者都具有Git Bash shell,或者两者中只有一个?

【问题讨论】:

另见***.com/q/11849737/405017和***.com/q/3672272/405017和superuser.com/q/742536 网站1:git-for-windows.github.io和网站2:git-scm.com有什么区别?两者都提供了适用于 Windows 的 Git 二进制文件。 只是想提一下,在撰写本文时,gitforwindows.org 和 git-scm.com/downloads 都指向相同的可下载二进制文件,而github.com/git-for-windows/git 在任何一种情况下都是官方存储库。 gitforwindows.org 站点似乎是 Git for Windows 的官方“面孔”;请放心,这不是一些“独立但看似相似”的项目。它实际上是同一个软件。 【参考方案1】:

git-scm.com 是版本控制软件 Git 的官方网站。没有“Git-SCM”,它只是 源代码控制管理 (SCM) 软件的 URL——名字只是 Git。最初为 Linux 编写的原始 Git 软件仅作为在 Windows 上不易编译的源提供。

如果您只是对在 Windows 上安装 Git 感兴趣,那么您可以停止阅读此处并下载 Windows 构建 from the official website。

Windows 版 Git

Git for Windows 是一个致力于为 Windows 构建原生 Git 的项目。 Windows 版本可通过on the official Git website 下载,它们提供 32 位和 64 位版本。

Git for Windows 建立在 MSYS2(MinGW 的一部分)之上,它提供了一个最小的类 unix shell 环境,用于运行 Git 的所有组件,这些组件不是用本机代码编写的(很多Git 是作为 shell 脚本编写的)。为了使用 MSYS2 构建 Git,项目组有一个特殊的“Git for Windows SDK”,它基本上是在 Windows 上构建 Git 所需的整个构建环境,并提供 with everything 你需要开始使用 Git 本身。

该项目维护自己的fork of Git,它与原始 Git 项目保持同步,但包含在 Windows 上构建它所需的一组补丁。 Git for Windows releases 通常会在正式版发布后稍作延迟发布(虽然有时会跳过版本)。

msysGit

在 Git 版本 2 之前,Git for Windows 二进制文件由名为 msysGit 的项目发布,该项目是 Git for Windows 项目的前身。该项目于 2015 年 8 月 18 日退役,转而使用重建的 Git for Windows SDK 开发环境启动 Git for Windows 项目。新项目大多是由同一个团队开始的。

虽然许多人认为 msysGit 是 Git 二进制文件的名称,但实际上那是他们创建的开发环境的名称。它基于 MSYS,这是在 MSYS2 重新启动之前的较旧且有点过时的版本。 MSYS 的糟糕状态是 Git for Windows 项目以完全改进的构建环境启动的原因之一。

该项目实质上发布了三样东西:msysGit、Windows 版 Git 和 Windows 版便携式 Git。 msysGit 安装程序将安装和设置在 Windows 上构建 Git 所需的开发环境,就像 Git for Windows SDK 现在所做的那样。 Git for Windows 是一个安装程序,可以在 Windows 机器上安装 Git,而便携式 Git for Windows 只是您不必安装的二进制文件。请注意,他们的所有版本都是作为“预览”版本发布的,这意味着它们不会是完全支持的版本。尽管如此,该项目非常成熟,发布的版本非常稳定,是在 Windows 上设置 Git 的事实上的最佳方式。

Git 重击

如上所述,很多 Git 都是作为 shell 脚本编写的。为了执行这些脚本,Windows 版 Git 使用与 MSYS2 捆绑在一起的 Bash(因此 Bash 可以作为它的解释器)。

Git Bash 通常指的是 Git for Windows 安装程序创建的快捷方式。它会启动一个运行 Bash 的全功能控制台窗口,因此您可以使用 Git 以及一组常用命令行工具或 Unix 程序(如 lessawkgrep,甚至是文本编辑器 vim )。特别是对于经验不足的用户,Git Bash 是与 Git 交互的常用方式,尽管您可以在更多以 Windows 为中心的环境中轻松使用它,例如 PowerShell。

从 Git 版本 2 开始,Git Bash 将默认在 MinTTY(MSYS2 附带的terminal emulator)中启动,即使对于不习惯控制台体验的用户也能轻松使用。

了解 Git Bash 将始终有效也很有用,即使您在设置 Windows 版 Git 期间决定不将任何 Git 可执行文件添加到 PATH 中也是如此。但是,我个人的建议是将 Git 可执行文件(只是 Git 可执行文件,在安装过程中选择“从 Windows 命令提示符中使用 Git”选项)添加到 PATH。这样,您可以从其他 shell(cmd.exe 或 PowerShell)使用 Git,其他程序也可以访问它(例如,许多库甚至 IDE 集成都希望 PATH 中的 Git 可执行文件与 Git 存储库交互)。

【讨论】:

谢谢!我在网络上的任何地方都找不到这个,相信我,我已经搜索了很多次。有一些零碎的东西,但没有比这更全面的了。 msysGit 是二进制文件/.exe 等,git-scm 是最终产品? msysGit 是构建最终产品“Git for Windows”的构建环境,就是这样(Git,但适用于 Windows),是的。而“git-scm”只是一个蹩脚的域名:P @trysis,还有一个历史事实:Git for Windows 在它的婴儿期和青春期被称为 msysGit,许多早期采用者都知道这个名字,并且它坚持了下来。后来,这个 Windows 移植的开发者决定将使用 msysGit 构建的二进制安装程序的名称更改为 Git for Windows,并为 Git for Windows 开发环境保留名称“msysGit”。这肯定会增加混乱,因为您完全可以在 Web 上找到名称“msysGit”表示 Windows 的 Git。 @poke 我认为,“scm”代表“软件配置管理”(en.wikipedia.org/wiki/Software_configuration_management)。

以上是关于适用于 Windows 的 Git-scm、msysGit 和 Git 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

MSI vs nuget包:哪个更适合持续交付?

使用 PowerShell 命令 Start-Process 安装 msi 时,出现 Exit-code 1603 错误

MSI 与 nuget 包:哪个更适合持续交付?

vs2015安装 dotfuscator.msi丢失

.msi文件和exe文件相比较有啥优点和缺点?

使用 Azure MSI 访问 Azure 表存储