Git Bash的确切含义是什么?

Git Bash

过去两天我一直在和Git Bash合作。 我现在知道commitpushpullfetchmerge等基本操作。 但是我仍然不知道Git Bash 本身是什么!

我已经search了很多关于Git Bash的内容,但是我所看到的所有网站都关注其命令的function。 我的问题仍然没有find一个好的答案。 现在,我认为,我是在正确的地方得到这个答案!

git bash是一个shell:

  • 运行的进程是sh.exe (与msysgit一起打包, share/WinGit/Git Bash.vbs
  • git是一个已知的命令
  • $HOME被定义

请参阅“ 修复msysGit便携式$HOME位置 ”:

在Windows 64上:

 C:\Windows\SysWOW64\cmd.exe /c ""C:\Prog\Git\1.7.1\bin\sh.exe" --login -i" 

这不同于git-cmd.bat ,它在普通的DOS命令提示符下提供了git命令。

GitHub for Windows(G4W)等工具为git提供了不同的shell (包括PowerShell)


2015年4月更新

注意: msysgit / Git for windows 1.9.5中的git bash是一个老版本:

 GNU bash, version 3.1.20(4)-release (i686-pc-msys) Copyright (C) 2005 Free Software Foundation, Inc. 

但是随着msysgit (2015年第四季度)和新的Git For Windows (2015年第二季度)的逐步淘汰 ,您现在已经拥有适用于Windows 2.3.5的Git 。
它基于64位msys2项目 ,基于现代Cygwin(POSIX兼容层)和MinGW-w64,独立重写MSYS,以更好地与本地Windows软件互操作为目标。 msys2有自己的安装程序 。

git bash现在(使用新的Git For Windows):

 GNU bash, version 4.3.33(3)-release (x86_64-pc-msys) Copyright (C) 2013 Free Software Foundation, Inc. 

原始答案(2013年6月)更准确地说,从msygit维基 :

从历史上看,Windows上的Git只是使用Cygwin正式支持。
为了帮助创build本地Windows版本,此项目是基于mingw fork开始的

为了使项目名称的乳白色“汤”更加清晰,我们这样说:

  • msysGit – 是这个项目的名称,是Git for Windows的编译环境,它释放官方的二进制文件
  • MinGW – 是本地Microsoft Windows应用程序的极简主义开发环境。
    在Microsoft运行时上它确实是一个非常简单的编译时间层; 因此,MinGW程序是真正的Windows程序,没有任何Unix风格path或POSIX niceties的概念,如fork()调用
  • MSYS – 是一个Bourne Shell命令行解释器系统,由MinGW(和其他人)使用,从Cygwin 过去
  • Cygwin – 一个类似Linux的环境,过去用于构buildWindows的Git,现在与msysGit没有任何关系

所以,你的两行描述“git bash”是:

Git bash ”是包含在“Git for Windows”中的msys shell,是Cygwin(旧版本)的简化版本,其唯一目的是提供足够的POSIX层来运行bash。


提醒:

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

msysGit不是Windows的Git; 这是一个安装Git的安装程序,只有Git

有关msysgit和Cygwin + git的区别,请参阅更多内容。

我认为问题提供者(是)认为git bash是像git initgit checkout这样的命令。 Git bash不是一个命令 ,它是一个接口 我也会假设提问者不是linux用户,因为bash是非常stream行的unix / linux世界。 名称“bash”是“ B ourne A gain SH ell”的缩写。 Bash是一个纯文本的命令界面,具有允许自动化脚本运行的function。 比较好的方法是将bash与Windows7 / 8中新的PowerShell接口进行比较。 一个不好的比喻(但是更多的人可能更容易理解)是DOS和早期版本Windows的命令提示符和.BAT(批处理)命令文件的组合。

参考文献: