Git-scm、msysGit和Git for Windows之间的区别

93

什么是 git-scm (从git-scm.com下载)和 msysGit (托管在Google CodeGithub和可能其他地方)之间的区别?它们似乎非常相似,尽管我有 git-scm,但我已经应用了适用于 msysGit 的修复程序,并且它们似乎运行良好。

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


1
另请参阅https://dev59.com/UGfWa4cB1Zd3GeqPcgLw和https://dev59.com/cXA65IYBdhLWcg3wuRB8以及http://superuser.com/q/742536。 - Phrogz
网站1:https://git-for-windows.github.io/ 和网站2:https://git-scm.com 有什么区别?两者都提供Windows版的Git二进制文件。 - joedotnot
1
只是想提一下,截至本文撰写时,http://gitforwindows.org/和https://git-scm.com/downloads都指向相同的可下载二进制文件,并且在任何情况下,https://github.com/git-for-windows/git都是官方存储库。 gitforwindows.org网站似乎是Git for Windows的官方“面孔”;请放心,它不是某个“分离但具有欺骗性的类似”项目。 它就是同样的软件。 - John Y
1个回答

156

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

如果您只想在Windows上安装Git,则可以在此停止阅读并直接从官方网站下载Windows版本。

Windows版Git

Git for Windows是专门用于构建Windows本地版本的Git项目。 Windows版本可在官方Git网站上下载,提供32位和64位版本。

Git for Windows基于MSYS2构建(MinGW的一部分),提供了一个最小化的类Unix shell环境,用于运行所有非本地代码编写的Git组件(很多Git是作为shell脚本编写的)。为了使用MSYS2构建Git,该项目组有一个特殊的“Git for Windows SDK”,它基本上是构建Git所需的整个构建环境,并且包含一切你需要开始处理Git的内容。
该项目维护自己的Git分支,并与原始Git项目保持更新,但包含一组必要的补丁以在Windows上构建它。Git for Windows 发布通常会在官方版本发布后短暂延迟发布(尽管有时会跳过版本)。

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,Git for Windows和可移植的Git for Windows。msysGit安装程序将安装并设置构建Windows上Git所需的开发环境,就像现在的Git for Windows SDK一样。Git for Windows是一个安装程序,可以在Windows机器上安装Git,而可移植的Git for Windows只是二进制文件,您不需要进行安装。请注意,它们所有的版本都被发布为“预览”版本,这意味着它们不是完全受支持的版本。尽管如此,该项目非常成熟,发布非常稳定,是在Windows上设置Git的事实上最佳方式。

Git Bash

如上所述,很多Git都是编写为shell脚本的。为了执行这些脚本,Git for Windows使用Bash捆绑在MSYS2中(因此Bash作为其解释器工作)。

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

从Git版本2开始,默认情况下,Git Bash将在MinTTY中启动,这是一个带有MSYS2的终端模拟器,使得即使对于不习惯控制台体验的用户也能轻松使用。

如果您在安装Git for Windows期间决定不将任何Git可执行文件添加到PATH中,那么Git Bash仍然非常有用。然而,我的个人建议是将Git可执行文件(仅仅是Git可执行文件,在安装期间选择“从Windows命令提示符使用Git”的选项)添加到PATH中。这样,您可以在其他shell(cmd.exe或PowerShell)中使用Git,其他程序也可以访问它(例如,许多库甚至IDE集成都期望在PATH中有一个Git可执行文件以与Git存储库交互)。


3
谢谢!我在网上找了很多次也没找到,相信我,我已经搜索过了。虽然有一些零碎的信息,但没有这么全面的。 - trysis
基本上,msysGit 是二进制文件/.exe等,而 git-scm 则是最终产品? - trysis
2
msysGit 是用于构建最终产品“Git for Windows”的构建环境,它就是 Git 适用于 Windows 的版本。而“git-scm”只是个不太好的域名 :P - poke
3
@trysis,还有一个历史事实:Git for Windows 在其初期和发育时期被称为 msysGit,并且许多早期采用者知道它的这个名字,并坚持使用。后来,这个 Windows 版本的开发人员决定将使用 msysGit 构建的二进制安装程序的名称改为 Git for Windows,并将名称“msysGit”仅保留给 Git for Windows 开发环境。这肯定增加了混淆,因为您可以在网络上找到使用“msysGit”名称表示 Git for Windows 的情况。 - kostix
1
@poke 我认为,“scm”代表“软件配置管理”(http://en.wikipedia.org/wiki/Software_configuration_management)。 - Tilman Vogel
显示剩余9条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接