Git Bash的确切含义是什么?

What is the exact meaning of Git Bash?

吉特巴什

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

我已经搜索了很多关于GitBash的内容,但是我看到的所有站点都关注于它命令的功能。我仍然没有找到一个好的答案来回答我的问题。现在,我想,我找到了正确的答案!


Git Bash是一个shell,其中:

  • 运行过程为sh.exe(与msysgit包装,如share/WinGit/Git Bash.vbs)
  • git是一个已知的命令
  • 定义了$HOME

参见"Fix msysgit portable $HOMElocation"(修复msysgit便携式$HOME位置):

在Windows 64上:

1
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提供了不同的外壳(包括PowerShell外壳)

2015年4月更新:

注意:用于Windows1.9.5的msysgit/git中的git bash是旧的:

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

但是随着MSysGit(2015年第4季度)和新的Git for Windows(2015年第2季度)的逐步淘汰,现在您已经拥有了Git for Windows 2.3.5。它有一个更为新的bash,基于64位的msys2项目,一个独立的msys重写,基于现代cygwin(posix兼容层)和mingw-w64,目的是更好地与本地Windows软件互操作。msys2也有自己的安装程序。

现在Git bash(使用新的Git for Windows)是:

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

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

Historically, Git on Windows was only officially supported using Cygwin.
To help make a native Windows version, this project was started, based on the mingw fork.

To make the milky 'soup' of project names more clear, we say like this:

  • msysGit - is the name of this project, a build environment for Git for Windows, which releases the official binaries
  • MinGW - is a minimalist development environment for native Microsoft Windows applications.
    It is really a very thin compile-time layer over the Microsoft Runtime; MinGW programs are therefore real Windows programs, with no concept of Unix-style paths or POSIX niceties such as a fork() call
  • MSYS - is a Bourne Shell command line interpreter system, is used by MinGW (and others), was forked in the past from Cygwin
  • Cygwin - a Linux like environment, which was used in the past to build Git for Windows, nowadays has no relation to msysGit

所以,关于"git bash"的两行描述是:

"Git bash"是"Git for Windows"中包含的MSYS shell,是Cygwin的精简版(旧版),其唯一目的是提供足够的POSIX层来运行bash。

提醒:

msysGit is the development environment to compile Git for Windows. It is complete, in the sense that you just need to install msysGit, and then you can build Git. Without installing any 3rd-party software.

msysgit不是用于Windows的Git;它是安装Git的安装程序,而且只安装Git。

请参阅"msysgit和cygwin+git的区别"中的更多内容。.


我认为提问者认为git bash是一个类似git init或git checkout的命令。GitBash不是一个命令,它是一个接口。我还假设asker不是Linux用户,因为bash在UNIX/Linux世界非常流行。"bash"这个名字是"bourneausshell"的缩写。bash是一个纯文本的命令接口,它具有允许自动脚本运行的功能。一个很好的类比是将bash与windows7/8中的新PowerShell接口进行比较。一个不好的类比(但一个很可能更容易被更多人理解)是命令提示符和.bat(批处理)命令文件的组合,来自DOS时代和Windows早期版本。

参考文献:

  • https://en.wikipedia.org/wiki/bash_uu(unix_shell)
  • https://en.wikipedia.org/wiki/windows_PowerShell


bash是一个命令行界面,由BrianFox在27年前创建,作为BourneShell的免费软件替代品。shell是一种特定的命令行接口。bash是"开放源代码",这意味着任何人都可以阅读代码并提出修改建议。从一开始,它就得到了大量工程师的支持,他们致力于使它成为一个令人难以置信的工具。bash是Linux和Mac的默认shell。基于这些原因,bash是最常用和分布最广的shell。

Windows有一个不同的命令行界面,称为命令提示。虽然它有许多与bash相同的特性,但是bash更受欢迎。由于开源社区的力量和它们提供的工具,掌握bash比掌握命令提示更好。

要在Windows计算机上使用bash,我们需要下载并安装一个名为git bash的程序。GitBash(Windows的bash)允许我们在Windows环境中轻松访问bash以及另一个叫做git的工具。


在其核心,git是一组命令行实用程序,设计用于在UNIX风格的命令行环境中执行。像Linux和MacOS这样的现代操作系统都包括内置的Unix命令行终端。这使得Linux和MacOS在使用Git时成为互补的操作系统。Microsoft Windows使用Windows命令提示符(非UNIX终端环境)。

什么是Git Bash?

GitBash是一个用于MicrosoftWindows环境的应用程序,它为Git命令行体验提供了一个仿真层。bash是bourne-again-shell的缩写。shell是一种终端应用程序,用于通过书面命令与操作系统进行接口。bash是Linux和MacOS上流行的默认shell。GitBash是一个在Windows操作系统上安装bash、一些常见的bash实用程序和git的包。

资料来源:https://www.atlassian.com/git/tutorials/git-bash