基础

Git Bash:是什么,以及如何在 Windows 中使用

更新于: · Skillaria.Top

Git Bash 是随 Git for Windows 一同安装的 Windows 终端,提供熟悉的类 Unix 环境:bash 解释器、ls、cd、cat、grep、ssh 以及 Git 本身。它的作用是让 Git 命令和文档中的说明在 Windows 下与 Linux 和 macOS 上一样运行。

什么是 Git Bash

Git Bash 是随 Git for Windows 一同安装的 Windows 应用程序,它打开一个运行 bash 解释器的终端窗口。其中包含 Git 本身,以及一组标准的类 Unix 工具:ls、cd、pwd、cat、grep、find、less、ssh、ssh-keygen、curl 等。

从技术上讲,它是 MSYS2 环境的移植版:程序为 Windows 编译,但行为像在 Linux 中一样。终端窗口默认使用 MinTTY 模拟器。它不是虚拟机,也不是完整的 Linux,那是 WSL 的任务。Git Bash 更轻量:启动瞬间完成,并直接操作 Windows 的文件。

在搜索引擎中,人们有时会输入“git bush”或“гит баш”(俄语用户的习惯写法)——指的都是同一个东西。Bash 是 Bourne Again SHell 的缩写,与灌木丛(bush)毫无关系。

有了 cmd 和 PowerShell,为什么还需要 Git Bash

Git 在 PowerShell 和普通命令提示符中同样可以运行。但 Git Bash 有一些实际优势,尤其对新手而言。

  • 所有系统上的命令都一样。 Git 文档、论坛回答、GitHub 说明和课程都使用 bash 命令。在 Git Bash 中它们无需修改即可运行:rm -rf build、cat ~/.ssh/id_ed25519.pub、export VAR=value。
  • SSH 工具开箱即用。 ssh-keygen、ssh-agent、ssh-add 已经就位,为 GitHub 创建密钥只需一分钟。
  • 命令提示符中显示 Git 信息。 Git Bash 会在输入行中显示当前分支,例如 (main),合并过程中则显示 (main|MERGING)。
  • 自动补全。 Tab 可以补全 Git 命令、分支名和文件名。
  • 面向未来的技能。 服务器、Docker 容器和 CI 都运行在 Linux 上。习惯了 Git Bash 中的 bash,你在服务器上也会得心应手。

Git Bash、Git CMD、PowerShell:区别在哪里

安装 Git for Windows 之后,开始菜单中会出现好几个条目,容易让人困惑。

工具是什么何时使用
Git Bash带有类 Unix 工具和 Git 的 bash 环境日常 Git 工作,按网上教程操作
Git CMD普通的 Windows 命令提示符(cmd.exe),Git 已加入 PATH习惯 cmd,只需要 git 命令时
Git GUI基于 Tcl/Tk 的简单图形客户端直观地创建提交,使用较少
PowerShell / cmdWindows 标准终端安装时选择了 PATH 选项“from the command line and also from 3rd-party software”后,Git 即可使用

Git CMD 并不是单独的程序,而是配置好环境的普通 cmd。其中的 Git 命令完全相同,但 ls、cat、grep 不可用,取而代之的是 dir、type 和 findstr。搜索“cmd git”通常是想知道如何在标准命令提示符中运行 git。答案很简单:如果 Git 在 PATH 中,直接执行 git status 即可。

如何打开 Git Bash

从开始菜单

搜索“Git Bash”并启动该应用。终端会在用户的主文件夹中打开:/c/Users/用户名,在 bash 中写作 ~。

在项目文件夹中通过右键菜单

最方便的方法:在资源管理器中,在项目文件夹的空白处右键单击,选择“Open Git Bash here”。在 Windows 11 中,此选项隐藏在“显示更多选项”里(或使用 Shift + 右键)。

在 VS Code 终端中

打开终端(Ctrl + `),点击“+”旁边的箭头,选择 Git Bash。若想默认使用它,执行命令“Terminal: Select Default Profile”,然后选择 Git Bash。

在 Windows Terminal 中

Git for Windows 可以在安装向导中选项添加 Git Bash 配置文件到 Windows Terminal。如果没有该配置文件,可以新建一个,命令行为 C:\Program Files\Git\bin\bash.exe -i -l。

路径与文件:与 Windows 的主要区别

在 Git Bash 中,路径采用 Unix 风格。C 盘变成 /c,反斜杠变成正斜杠。

WindowsGit Bash
C:\Users\Anna\projects/c/Users/Anna/projects
D:\work/d/work
%USERPROFILE%~ 或 $HOME

如果路径中含有空格,请加上引号:cd "/c/Users/Anna/My Projects"。用 explorer . 可以在资源管理器中打开当前文件夹,用 code . 则可以在 VS Code 中打开。

新手需要的 Git Bash 基本命令

导航与文件

pwd                 # 我现在在哪里
ls -la              # 列出文件,包括隐藏文件(.git、.gitignore)
cd projects/site    # 进入文件夹
cd ..               # 返回上一级
mkdir new-app       # 创建文件夹
touch index.html    # 创建空文件
cat README.md       # 显示文件内容
rm file.txt         # 删除文件
rm -r old-folder    # 删除文件夹及其内容
clear               # 清空屏幕

直接在 Git Bash 中创建第一个仓库

$ mkdir my-first-repo && cd my-first-repo
$ git init
Initialized empty Git repository in C:/Users/Anna/my-first-repo/.git/
$ echo "Hello, Git" > hello.txt
$ git add hello.txt
$ git commit -m "Add hello.txt"
$ git log --oneline

执行 git init 之后,命令提示符会发生变化:括号中会出现分支名。这是快速确认自己位于仓库内部的方法。

实用技巧

  • Tab:补全命令、分支和文件。连按两次可查看所有候选项。
  • 上箭头:上一条命令;history 显示全部历史;Ctrl + R 搜索历史。
  • 复制/粘贴:在 MinTTY 中,用鼠标选中文本即会复制,粘贴使用 Shift + Insert 或右键。Ctrl + C 在终端中是中断命令,而不是复制。
  • q:退出分页查看(git log、git diff 会在 less 中打开)。
  • Esc,然后输入 :q! 并回车:如果 Vim 为提交说明而打开,用它退出。

Git CLI:为什么要学习命令行

Git CLI 是 Git 的命令行界面,也就是 git ... 命令本身。图形客户端适合查看历史,但它们有局限:并非所有操作都可用,出错时按钮无法解释发生了什么。命令行则提供完整的控制和详细的信息。

还有一个理由:在面试中或在别人的团队里,你可能会被要求演示如何撤销提交或解决冲突,而每个人使用的图形界面都不一样。命令则到处都相同。好的策略是用 CLI 工作,并用图形界面或 IDE 内置工具查看 diff 和历史。

按自己的习惯配置 Git Bash

~/.bashrc 中的别名

Git Bash 启动时会读取 ~/.bash_profile 和 ~/.bashrc。可以在其中添加快捷命令:

alias gs='git status'
alias gl='git log --oneline --graph --all'
alias ll='ls -la'

要让修改立即生效而无需重启,执行 source ~/.bashrc。如果启动时出现“found .bashrc but no .bash_profile”之类的提示,Git Bash 会自动创建 .bash_profile,这是正常现象。

Git 自身的别名

别名也可以保存在 Git 中,这样它们在任何终端里都能使用:

git config --global alias.st status
git config --global alias.lg "log --oneline --graph --all"

之后 git st 和 git lg 在 Git Bash 和 PowerShell 中都可以使用。

外观

字体、字号、颜色和透明度可以通过右键点击窗口标题栏 → Options 设置。若要正确显示中文,请在 Text 部分确认编码为 UTF-8。

Git Bash 中的常见问题

git log 中出现乱码,而不是中文字符

通常在 Options → Text 中将编码设为 UTF-8,并在 ~/.bashrc 中添加 export LANG=zh_CN.UTF-8 即可解决。若 git status 中显示的非 ASCII 文件名以 \320\277 之类的转义序列出现,请执行 git config --global core.quotepath false。

交互式程序卡住

某些控制台程序(例如不带参数运行的 Python 解释器或 node)在 MinTTY 中表现异常。请通过 winpty 启动,例如 winpty python,或在 Windows Terminal 中使用 Git Bash。

路径被转换成奇怪的值

MSYS 会自动把看起来像 Unix 路径的参数转换为 Windows 路径。这有时会造成问题,例如向 docker run 传递 /app 时。解决方法是写成双斜杠(//app),或为该命令设置 MSYS_NO_PATHCONV=1。

推送时出现“Permission denied (publickey)”

SSH 密钥未创建或未添加到 GitHub。在 Git Bash 中执行 ssh-keygen -t ed25519 -C "you@example.com" 创建密钥,将 ~/.ssh/id_ed25519.pub 的内容添加到 GitHub 设置中,然后用 ssh -T git@github.com 检查。

Git Bash 还是 WSL

WSL 是 Windows 内部运行的真正 Linux,拥有独立的文件系统和软件包。当你需要在 Linux 下开发时使用它:运行 Docker、编译、使用服务器端技术栈。Git Bash 更简单、更轻量,对于 Git 工作完全够用。要注意不要混用:在 WSL 中克隆的仓库最好用 WSL 中的 Git 维护,而位于 C 盘的仓库则使用 Git for Windows。

总结

Git Bash 是随 Git for Windows 一同提供的、带有 bash 和类 Unix 工具的终端。它让 Windows 与 Git 文档和教程保持一致,提供开箱即用的 SSH,并在命令提示符中显示分支。Git CMD 则是同一个 Git 在普通命令提示符下的版本,没有 Unix 命令。学习和日常在 Windows 上工作时,建议选择 Git Bash:Git 课程的实践课也以它作为主要终端。

常见问题

Git Bash 是免费的吗?

是的,Git Bash 包含在 Git for Windows 中,以开源许可证免费分发。

能否单独安装 Git Bash,而不安装 Git?

不能,Git Bash 只随 Git for Windows 一起安装。如果已经装了 Git,开始菜单中就有 Git Bash。

macOS 和 Linux 上也有 Git Bash 吗?

没有单独的程序,也不需要。macOS 和 Linux 的内置终端本身就使用 bash 或 zsh,并带有类 Unix 工具。

Git Bash 的主目录和配置文件在哪里?

主目录是 C:\Users\用户名,在 bash 中写作 ~。.bashrc、.bash_profile、.gitconfig 和 .ssh 文件夹都在那里。

能在 Git Bash 中运行 bat 和 exe 文件吗?

可以,Windows 程序可以通过名称或路径运行,例如 ./build.bat 或 notepad file.txt。

通过视频学习本主题

课程“Git 从零基础到胜任开发者”结合实践详细讲解了这一主题。

前往课程