Git Bash 是 Windows 系统下常用的命令行工具,它提供了类 Unix 的环境,方便开发者使用 Git 命令进行版本控制,以下将详细介绍 Git Bash 的常用命令,涵盖仓库管理、文件操作、分支管理、远程仓库交互等核心功能,并通过表格形式辅助说明,帮助开发者快速上手和高效使用。

仓库初始化与配置
在使用 Git 之前,首先需要配置用户信息,这些信息会记录在提交历史中,使用 git config 命令可以设置全局或局部的用户名和邮箱:
- 全局配置:
git config --global user.name "Your Name"和git config --global user.email "your.email@example.com",配置信息会存储在用户主目录的.gitconfig文件中。 - 局部配置:进入项目目录后,使用
git config user.name "Your Name"(不带--global参数)仅对当前仓库生效。
初始化仓库有两种方式:一是进入项目目录后执行 git init,会在当前目录创建一个 .git 文件夹,用于跟踪版本控制;二是通过 git clone <仓库地址> 克隆远程仓库到本地,该命令会自动下载整个仓库历史记录并创建工作目录。
文件状态与暂存区操作
Git 的核心工作区包括工作目录(Working Directory)、暂存区(Staging Area)和本地仓库(Local Repository),常用文件操作命令如下:
git status:查看工作目录和暂存区的状态,显示未跟踪、已修改、已暂存的文件信息。git add <file>或git add .:将文件添加到暂存区, 表示添加所有修改和未跟踪的文件。git reset <file>:将暂存区的文件移回工作目录,即取消暂存。git commit -m "提交信息":将暂存区的文件提交到本地仓库,-m参数后跟提交说明。git rm --cached <file>:停止跟踪文件但保留在工作目录中(用于从版本控制中移除文件)。
历史记录与版本回退
查看和操作提交历史是版本控制的核心功能:

git log:显示提交历史,包括提交哈希、作者、日期和提交信息,可加参数如--oneline(简化显示)、--graph(分支图形化)、-n 5(显示最近5条记录)。git show <commit_hash>:查看某次提交的详细修改内容。git diff:比较工作目录与暂存区的差异(git diff --staged比较暂存区与本地仓库)。git reset --hard <commit_hash>:将 HEAD 指向指定提交,并重置工作目录和暂存区,会丢失后续提交(谨慎使用)。git revert <commit_hash>:创建一个新提交来撤销指定提交的修改,保留历史记录。
分支管理
分支是 Git 实现并行开发的关键,常用命令包括:
git branch:列出本地分支,-r查看远程分支,-a查看所有分支。git branch <branch_name>:创建新分支。git checkout <branch_name>或git switch <branch_name>(Git 2.23+ 推荐):切换分支,-b参数可直接创建并切换分支(如git checkout -b dev)。git merge <branch_name>:将指定分支合并到当前分支,若存在冲突需手动解决后提交。git branch -d <branch_name>:删除已合并的分支,-D强制删除未合并的分支。
远程仓库交互
与远程仓库(如 GitHub、GitLab)交互是团队协作的基础:
git remote -v:查看远程仓库别名和地址。git remote add <alias> <url>:添加远程仓库,如git remote add origin https://github.com/user/repo.git。git push -u <alias> <branch>:推送本地分支到远程仓库,-u设置上游分支(首次推送需加)。git pull <alias> <branch>:拉取远程分支更新并合并到当前分支,相当于git fetch + git merge。git fetch <alias>:获取远程仓库更新但不会合并,需手动git merge。
标签管理
标签用于标记重要版本(如 v1.0):
git tag:列出所有标签。git tag -a <tag_name> -m "标签信息":创建带注释的标签。git push <alias> <tag_name>:推送标签到远程仓库。git checkout -b <branch_name> <tag_name>:基于标签创建新分支。
其他实用命令
git stash:暂存工作目录的修改(如git stash push -m "说明"),git stash pop恢复并删除暂存,git stash list查看暂存列表。git clean -fd:删除未跟踪的文件和目录(-f强制删除,-d删除目录)。git reflog:查看 HEAD 的移动历史,用于恢复丢失的提交。
常用命令速查表
| 功能分类 | 命令示例 | 说明 |
|---|---|---|
| 仓库配置 | git config --global user.name "Name" |
设置全局用户名 |
git init |
初始化本地仓库 | |
| 文件操作 | git add file.txt |
添加文件到暂存区 |
git commit -m "提交信息" |
提交暂存区文件 | |
| 历史记录 | git log --oneline |
简化显示提交历史 |
git reset --hard HEAD~1 |
回退到上一个提交 | |
| 分支管理 | git checkout -b dev |
创建并切换到 dev 分支 |
git merge dev |
合并 dev 分支到当前分支 | |
| 远程仓库 | git push origin main |
推送 main 分支到远程 origin |
git pull origin main |
拉取远程 main 分支更新 | |
| 标签管理 | git tag -a v1.0 -m "版本1.0" |
创建带注释的标签 |
相关问答FAQs
Q1: 如何解决 Git 合并冲突?
A: 当两个分支对同一文件的同一部分进行修改合并时,冲突会自动标记在文件中(如 <<<<<<< HEAD、、>>>>>>> branch_name),解决步骤:① 手动编辑冲突文件,删除标记符并保留需要的代码;② 执行 git add <file> 标记冲突已解决;③ 提交合并结果:git commit -m "解决冲突,合并分支"。

Q2: Git 中 reset、revert 和 checkout 的区别是什么?
A: 三者功能不同:git reset 用于移动 HEAD 指针和重置暂存区/工作目录(--soft 仅移动指针,--mixed 移动指针并重置暂存区,--hard 完全重置工作目录);git revert 通过创建新提交来撤销修改,保留历史;git checkout 主要用于切换分支或恢复文件(如 git checkout -- file.txt 从暂存区恢复文件到工作目录)。reset --hard 会丢失修改,需谨慎使用。
