Git Bash:是什么,以及如何在 Windows 中使用
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 / cmd | Windows 标准终端 | 安装时选择了 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,反斜杠变成正斜杠。
| Windows | Git 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。