Git 是分布式版本控制系统的事实标准,其命令体系看似庞杂,但核心可按功能分类理解。本文将系统梳理 Git 所有核心命令的分类、解析,以及高频常用命令,并补充实战场景示例,帮你彻底掌握 Git 用法。
一、Git 命令的整体分类
Git 命令可按核心功能维度分为 8 大类,覆盖从仓库初始化到协作发布的全流程,下表先梳理分类框架:
| 分类 | 核心作用 | 典型命令 |
|---|---|---|
| 仓库基础 | 初始化 / 克隆仓库、查看仓库信息 | git init、git clone、git status、git config |
| 暂存区操作 | 管理工作区→暂存区的文件 | git add、git rm、git mv、git restore --staged |
| 提交操作 | 暂存区→版本库的版本记录 | git commit、git amend、git reset (--soft/mixed) |
| 分支与标签 | 分支创建 / 切换 / 合并、标签管理 | git branch、git checkout、git switch、git merge、git tag |
| 版本回溯 | 查看 / 回滚版本、对比差异 | git log、git diff、git reset、git revert、git checkout <commit> |
| 远程仓库 | 与远程仓库同步(拉 / 推 / 关联) | git remote、git fetch、git pull、git push |
| 进阶协作 | 解决冲突、变基、暂存工作区 | git rebase、git stash、git cherry-pick、git merge --abort |
| 底层 / 运维 | 仓库维护、底层对象操作 | git gc、git fsck、git reflog、git clean |
二、核心命令全解析(按分类)
1. 仓库基础命令(必学)
git init
-
作用 :在本地创建空的 Git 仓库,生成
.git目录(存储版本信息)。 -
用法 :
bash
bashgit init # 初始化当前目录为仓库 git init <dir> # 在指定目录初始化仓库 git init --bare # 创建裸仓库(无工作区,用于服务器)
git clone
-
作用:克隆远程仓库到本地(包含完整版本历史)。
-
用法 :
bash
bashgit clone <url> # 克隆到同名目录 git clone <url> <dir> # 克隆到指定目录 git clone --depth 1 <url> # 浅克隆(仅最新版本,节省空间)
git status
-
作用:查看工作区、暂存区的文件状态(未跟踪 / 已修改 / 已暂存)。
-
用法 :
bash
bashgit status # 详细状态 git status -s # 精简输出(短格式)
git config
-
作用:配置 Git 全局 / 仓库级参数(用户信息、编辑器、别名等)。
-
用法 :
bash
bash# 全局配置(所有仓库生效) git config --global user.name "Your Name" git config --global user.email "your@email.com" # 仓库级配置(仅当前仓库生效) git config user.email "work@email.com" # 查看配置 git config --list # 设置别名(简化命令) git config --global alias.st status
2. 暂存区操作命令(高频)
git add
-
作用:将工作区文件添加到暂存区(跟踪文件变更)。
-
用法 :
bash
bashgit add <file> # 添加指定文件 git add . # 添加当前目录所有变更(含新增/修改,不含删除) git add -A # 添加所有变更(新增/修改/删除) git add -p # 交互式添加(按块选择)
git rm
-
作用:删除文件并将删除操作加入暂存区。
-
用法 :
bash
bashgit rm <file> # 删除文件(工作区+暂存区) git rm --cached <file> # 仅从暂存区删除(保留工作区文件)
git mv
-
作用:重命名 / 移动文件,同时更新暂存区。
-
用法 :
bash
bashgit mv old.txt new.txt # 重命名 git mv file.txt dir/ # 移动文件
git restore --staged
-
作用:将暂存区的文件撤回至工作区(取消 git add 操作)。
-
用法 :
bash
bashgit restore --staged <file> # 取消指定文件的暂存
3. 提交操作命令(核心)
git commit
-
作用:将暂存区的变更提交为版本(生成 commit 对象)。
-
用法 :
bash
bashgit commit -m "feat: 新增登录功能" # 带提交信息的提交 git commit -am "fix: 修复表单验证bug" # 跳过暂存区,直接提交已跟踪文件的修改 git commit --amend # 修正最后一次提交(修改信息/补充文件)
git reset(提交回滚)
-
作用:回滚版本,按参数不同影响暂存区 / 工作区。
-
用法 :
bash
bashgit reset --soft <commit> # 仅回滚版本库,暂存区/工作区不变 git reset --mixed <commit> # 回滚版本库+暂存区,工作区不变(默认) git reset --hard <commit> # 回滚版本库+暂存区+工作区(慎用,会丢失未提交变更)
4. 分支与标签命令(协作核心)
git branch
-
作用:管理分支(查看 / 创建 / 删除)。
-
用法 :
bash
bashgit branch # 查看本地分支(* 标记当前分支) git branch -r # 查看远程分支 git branch -a # 查看所有分支(本地+远程) git branch <name> # 创建分支 git branch -d <name> # 删除已合并的分支 git branch -D <name> # 强制删除未合并的分支
git switch(替代 git checkout 的分支切换)
-
作用:切换分支 / 创建并切换分支(Git 2.23+ 推荐)。
-
用法 :
bash
bashgit switch <branch> # 切换到已有分支 git switch -c <new-branch> # 创建并切换到新分支
git checkout
-
作用:切换分支 / 恢复文件(旧版核心命令,功能拆分后仍常用)。
-
用法 :
bash
bashgit checkout <branch> # 切换分支(等价于 git switch) git checkout -b <new-branch> # 创建并切换分支 git checkout <commit> <file> # 从指定版本恢复文件到工作区
git merge
-
作用:合并指定分支到当前分支。
-
用法 :
bash
bashgit merge <branch> # 合并分支(如 dev 合并到 main) git merge --no-ff <branch> # 禁用快进合并(保留分支历史) git merge --abort # 合并冲突时取消合并
git tag
-
作用:管理标签(标记发布版本,如 v1.0.0)。
-
用法 :
bash
bashgit tag # 查看标签 git tag v1.0.0 # 创建轻量标签 git tag -a v1.0.0 -m "v1.0 正式发布" # 创建附注标签(推荐) git push origin v1.0.0 # 推送标签到远程 git tag -d v1.0.0 # 删除本地标签
5. 版本回溯命令(调试 / 复盘)
git log
-
作用:查看提交历史。
-
用法 :
bash
bashgit log # 详细提交历史 git log --oneline # 精简输出(每行一个commit) git log --graph # 图形化显示分支历史 git log -n 5 # 仅显示最近5次提交 git log --author="Name" # 按作者筛选
git diff
-
作用:对比文件 / 版本间的差异。
-
用法 :
bash
bashgit diff # 工作区 vs 暂存区 git diff --staged # 暂存区 vs 版本库 git diff <branch1> <branch2> # 两个分支的差异 git diff <commit1> <commit2> # 两个版本的差异
git revert
-
作用:创建新提交,撤销指定版本的变更(保留历史,安全回滚)。
-
用法 :
bash
bashgit revert <commit> # 撤销指定提交的变更
6. 远程仓库命令(协作必备)
git remote
-
作用:管理远程仓库关联(查看 / 添加 / 删除)。
-
用法 :
bash
bashgit remote # 查看远程仓库别名 git remote -v # 查看远程仓库地址 git remote add origin <url> # 添加远程仓库(别名origin) git remote remove origin # 删除远程仓库关联
git fetch
-
作用:拉取远程仓库的版本信息(不合并到本地分支)。
-
用法 :
bash
bashgit fetch origin # 拉取origin的所有分支 git fetch origin <branch> # 拉取指定分支
git pull
-
作用:拉取远程分支并合并到本地当前分支(fetch + merge)。
-
用法 :
bash
bashgit pull origin <branch> # 拉取并合并远程分支 git pull --rebase origin <branch> # 拉取并变基(保持历史整洁)
git push
-
作用:将本地分支 / 标签推送到远程仓库。
-
用法 :
bash
bashgit push origin <branch> # 推送本地分支到远程 git push -u origin <branch> # 关联本地与远程分支(后续可直接git push) git push origin --tags # 推送所有标签到远程 git push -f origin <branch> # 强制推送(慎用,会覆盖远程历史)
7. 进阶协作命令(解决复杂场景)
git stash
-
作用:暂存工作区未提交的变更(切换分支时保留临时修改)。
-
用法 :
bash
bashgit stash # 暂存变更 git stash save "备注信息" # 带备注的暂存 git stash list # 查看暂存列表 git stash apply # 应用最近一次暂存(保留暂存记录) git stash pop # 应用并删除最近一次暂存 git stash drop # 删除最近一次暂存
git rebase
-
作用:变基(将当前分支的提交 "移植" 到目标分支顶端,整理历史)。
-
用法 :
bash
bashgit rebase <branch> # 将当前分支变基到目标分支 git rebase -i <commit> # 交互式变基(合并/修改/删除提交) git rebase --abort # 变基冲突时取消
git cherry-pick
-
作用:挑选指定提交应用到当前分支(复用其他分支的单次提交)。
-
用法 :
bash
bashgit cherry-pick <commit> # 应用指定提交
8. 底层 / 运维命令(日常少用,应急 / 维护)
git reflog
-
作用:查看所有分支的操作记录(恢复误删 / 误回滚的版本)。
-
用法 :
bash
bashgit reflog # 查看操作日志
git clean
-
作用:删除工作区未跟踪的文件(清理临时文件)。
-
用法 :
bash
bashgit clean -n # 预览要删除的文件(干跑) git clean -f # 强制删除未跟踪文件 git clean -fd # 删除未跟踪文件+目录
git gc
-
作用:垃圾回收(优化仓库,清理无用对象)。
-
用法 :
bash
bashgit gc # 自动执行垃圾回收
三、常用命令优先级(按使用频率排序)
高频核心(日常 80% 场景)
git status:随时查看文件状态git add:暂存变更git commit:提交版本git branch/git switch:分支管理git pull/git push:远程同步git log:查看历史git diff:对比差异
中高频(协作 / 调试)
git merge:合并分支git stash:暂存临时变更git reset:回滚提交git clone:克隆仓库git remote:管理远程仓库git revert:安全回滚版本
低频但关键(应急 / 进阶)
git rebase:整理提交历史git cherry-pick:复用提交git reflog:恢复误操作git clean:清理工作区git tag:标记发布版本
四、实战场景示例
场景 1:新手初始化仓库并提交
bash
bash
# 初始化仓库
git init
# 添加文件并提交
touch README.md
git add README.md
git commit -m "init: 初始化README"
场景 2:分支开发与合并
bash
bash
# 创建并切换到dev分支
git switch -c dev
# 开发完成后切回main,合并dev
git switch main
git merge dev
# 删除dev分支
git branch -d dev
场景 3:同步远程仓库并解决冲突
bash
bash
# 拉取远程最新代码
git pull origin main
# 若冲突,修改冲突文件后重新提交
git add <冲突文件>
git commit -m "fix: 解决合并冲突"
# 推送本地修改
git push origin main
场景 4:误删文件恢复
bash
bash
# 查看操作日志,找到删除前的commit
git reflog
# 恢复文件
git checkout <commit> -- <被删文件>
五、总结
Git 命令虽多,总数超过 150 个(含底层命令),但99% 的日常开发场景仅需 20 个左右的核心命令。核心逻辑围绕 "工作区→暂存区→版本库→远程仓库" 的数据流展开。掌握分类逻辑后,先吃透高频核心命令,再逐步学习进阶命令,即可覆盖绝大多数开发场景。
记住:不要死记硬背 ,优先用 git help <命令>(如 git help commit)查看官方文档,结合实际场景练习,是掌握 Git 的最佳方式。