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

git-scm (从git-scm.com下载)和msysGit(托pipe在Google Code , Github和其他人)之间有什么区别? 他们都看起来很相似,即使我有git-scm,我已经应用msysGit指定的修补程序,他们似乎工作正常。

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

网站git-scm.com是版本控制软件Git的官方网站。 没有“Git-SCM”,这只是源代码pipe理(SCM)软件的URL–名字就是Git 。 原来为Linux编写的原始Git软件仅作为在Windows上无法轻松编译的源代码提供。

如果你只是有兴趣在Windows上安装Git,那么你可以停下来在这里阅读,并从官方网站下载Windows版本。

Git for Windows

Git for Windows是专门为Windows构buildGit的本地构build的项目。 Windows版本可以在官方Git网站上下载,它们是32位和64位版本。

Git for Windows是build立在MSYS2( MinGW的一部分)的基础之上的,它提供了一个最小的类Unix环境,用于运行所有Git组件,这些组件并不是用本地代码编写的(很多Git被写成shell脚本)。 为了使用MSYS2构buildGit,项目组拥有一个特殊的“Git for Windows SDK”,它基本上是在Windows上构buildGit所需的整个构build环境,并提供了开始使用Git本身所需的一切 。

该项目维护自己的Git分支,该分支与最初的Git项目保持同步,但包含在Windows上构build它所需的一组补丁。 Git for Windows 版本通常在正式版本发布后很短的时间内发布(尽pipe版本有时会被忽略)。

msysGit

在Git版本2之前, Git for Windows二进制文件被称为msysGit的项目发布,它是Git for Windows项目的前身。 该项目已于2015年8月18日退役,赞成通过重build的Windows SDK开发环境Git来启动Git for Windows项目。 新项目大多是从同一个团队开始的。

虽然很多人认为msysGit是Git二进制文件的名称,但实际上这是他们创build的开发环境的名称。 它是基于MSYS,MSYS2新鲜开始之前的老式和过时的版本。 MSYS的糟糕状态是为什么Git for Windows项目是在完全改进的构build环境中启动的原因之一。

该项目基本上发布了三件事情:msysGit,Git for Windows和一个便携式Git for Windows。 msysGit安装程序将安装和设置在Windows上构buildGit所需的开发环境,就像现在的Windows SDKGit一样。 Git for Windows是一个安装程序,可以在Windows机器上安装Git,可移植的Git for Windows只是你不需要安装的二进制文件。 请注意,他们的所有版本都是以“预览”版本的forms发布的,这意味着他们不会被完全支持的版本。 尽pipe如此,这个项目还是非常成熟的,并且发布非常稳定,并且是在Windows上设置Git的事实上最好的方式。

Git Bash

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

Git Bash通常是指Git for Windows安装程序创build的快捷方式。 它启动了一个运行Bash的全function控制台窗口,所以你可以使用Git以及一组常用命令行工具或者Unix程序(比如lessawkgrep ,甚至是文本编辑器vim )。 特别是对于经验较less的用户,Git Bash是与Git交互的常用方式,尽pipe您可以从更多以Windows为中心的环境(如PowerShell)轻松使用它。

从Git版本2开始,Git Bash将默认在MinTTY中启动,MinTTY是MSYS2附带的terminal仿真程序 ,即使对于不熟悉控制台体验的用户也可轻松使用。

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