Git 命令全解析:分类、常用命令与实战指南

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

    bash 复制代码
    git init          # 初始化当前目录为仓库
    git init <dir>    # 在指定目录初始化仓库
    git init --bare   # 创建裸仓库(无工作区,用于服务器)
git clone
  • 作用:克隆远程仓库到本地(包含完整版本历史)。

  • 用法

    bash

    bash 复制代码
    git clone <url>          # 克隆到同名目录
    git clone <url> <dir>    # 克隆到指定目录
    git clone --depth 1 <url> # 浅克隆(仅最新版本,节省空间)
git status
  • 作用:查看工作区、暂存区的文件状态(未跟踪 / 已修改 / 已暂存)。

  • 用法

    bash

    bash 复制代码
    git 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

    bash 复制代码
    git add <file>    # 添加指定文件
    git add .         # 添加当前目录所有变更(含新增/修改,不含删除)
    git add -A        # 添加所有变更(新增/修改/删除)
    git add -p        # 交互式添加(按块选择)
git rm
  • 作用:删除文件并将删除操作加入暂存区。

  • 用法

    bash

    bash 复制代码
    git rm <file>     # 删除文件(工作区+暂存区)
    git rm --cached <file> # 仅从暂存区删除(保留工作区文件)
git mv
  • 作用:重命名 / 移动文件,同时更新暂存区。

  • 用法

    bash

    bash 复制代码
    git mv old.txt new.txt  # 重命名
    git mv file.txt dir/    # 移动文件
git restore --staged
  • 作用:将暂存区的文件撤回至工作区(取消 git add 操作)。

  • 用法

    bash

    bash 复制代码
    git restore --staged <file>  # 取消指定文件的暂存

3. 提交操作命令(核心)

git commit
  • 作用:将暂存区的变更提交为版本(生成 commit 对象)。

  • 用法

    bash

    bash 复制代码
    git commit -m "feat: 新增登录功能"  # 带提交信息的提交
    git commit -am "fix: 修复表单验证bug" # 跳过暂存区,直接提交已跟踪文件的修改
    git commit --amend                 # 修正最后一次提交(修改信息/补充文件)
git reset(提交回滚)
  • 作用:回滚版本,按参数不同影响暂存区 / 工作区。

  • 用法

    bash

    bash 复制代码
    git reset --soft <commit>  # 仅回滚版本库,暂存区/工作区不变
    git reset --mixed <commit> # 回滚版本库+暂存区,工作区不变(默认)
    git reset --hard <commit>  # 回滚版本库+暂存区+工作区(慎用,会丢失未提交变更)

4. 分支与标签命令(协作核心)

git branch
  • 作用:管理分支(查看 / 创建 / 删除)。

  • 用法

    bash

    bash 复制代码
    git 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

    bash 复制代码
    git switch <branch>       # 切换到已有分支
    git switch -c <new-branch> # 创建并切换到新分支
git checkout
  • 作用:切换分支 / 恢复文件(旧版核心命令,功能拆分后仍常用)。

  • 用法

    bash

    bash 复制代码
    git checkout <branch>     # 切换分支(等价于 git switch)
    git checkout -b <new-branch> # 创建并切换分支
    git checkout <commit> <file> # 从指定版本恢复文件到工作区
git merge
  • 作用:合并指定分支到当前分支。

  • 用法

    bash

    bash 复制代码
    git merge <branch>        # 合并分支(如 dev 合并到 main)
    git merge --no-ff <branch> # 禁用快进合并(保留分支历史)
    git merge --abort         # 合并冲突时取消合并
git tag
  • 作用:管理标签(标记发布版本,如 v1.0.0)。

  • 用法

    bash

    bash 复制代码
    git 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

    bash 复制代码
    git log                   # 详细提交历史
    git log --oneline         # 精简输出(每行一个commit)
    git log --graph           # 图形化显示分支历史
    git log -n 5              # 仅显示最近5次提交
    git log --author="Name"   # 按作者筛选
git diff
  • 作用:对比文件 / 版本间的差异。

  • 用法

    bash

    bash 复制代码
    git diff                  # 工作区 vs 暂存区
    git diff --staged         # 暂存区 vs 版本库
    git diff <branch1> <branch2> # 两个分支的差异
    git diff <commit1> <commit2> # 两个版本的差异
git revert
  • 作用:创建新提交,撤销指定版本的变更(保留历史,安全回滚)。

  • 用法

    bash

    bash 复制代码
    git revert <commit>       # 撤销指定提交的变更

6. 远程仓库命令(协作必备)

git remote
  • 作用:管理远程仓库关联(查看 / 添加 / 删除)。

  • 用法

    bash

    bash 复制代码
    git remote                # 查看远程仓库别名
    git remote -v             # 查看远程仓库地址
    git remote add origin <url> # 添加远程仓库(别名origin)
    git remote remove origin  # 删除远程仓库关联
git fetch
  • 作用:拉取远程仓库的版本信息(不合并到本地分支)。

  • 用法

    bash

    bash 复制代码
    git fetch origin          # 拉取origin的所有分支
    git fetch origin <branch> # 拉取指定分支
git pull
  • 作用:拉取远程分支并合并到本地当前分支(fetch + merge)。

  • 用法

    bash

    bash 复制代码
    git pull origin <branch>  # 拉取并合并远程分支
    git pull --rebase origin <branch> # 拉取并变基(保持历史整洁)
git push
  • 作用:将本地分支 / 标签推送到远程仓库。

  • 用法

    bash

    bash 复制代码
    git push origin <branch>  # 推送本地分支到远程
    git push -u origin <branch> # 关联本地与远程分支(后续可直接git push)
    git push origin --tags    # 推送所有标签到远程
    git push -f origin <branch> # 强制推送(慎用,会覆盖远程历史)

7. 进阶协作命令(解决复杂场景)

git stash
  • 作用:暂存工作区未提交的变更(切换分支时保留临时修改)。

  • 用法

    bash

    bash 复制代码
    git stash                 # 暂存变更
    git stash save "备注信息"  # 带备注的暂存
    git stash list            # 查看暂存列表
    git stash apply           # 应用最近一次暂存(保留暂存记录)
    git stash pop             # 应用并删除最近一次暂存
    git stash drop            # 删除最近一次暂存
git rebase
  • 作用:变基(将当前分支的提交 "移植" 到目标分支顶端,整理历史)。

  • 用法

    bash

    bash 复制代码
    git rebase <branch>       # 将当前分支变基到目标分支
    git rebase -i <commit>    # 交互式变基(合并/修改/删除提交)
    git rebase --abort        # 变基冲突时取消
git cherry-pick
  • 作用:挑选指定提交应用到当前分支(复用其他分支的单次提交)。

  • 用法

    bash

    bash 复制代码
    git cherry-pick <commit>  # 应用指定提交

8. 底层 / 运维命令(日常少用,应急 / 维护)

git reflog
  • 作用:查看所有分支的操作记录(恢复误删 / 误回滚的版本)。

  • 用法

    bash

    bash 复制代码
    git reflog                # 查看操作日志
git clean
  • 作用:删除工作区未跟踪的文件(清理临时文件)。

  • 用法

    bash

    bash 复制代码
    git clean -n              # 预览要删除的文件(干跑)
    git clean -f              # 强制删除未跟踪文件
    git clean -fd             # 删除未跟踪文件+目录
git gc
  • 作用:垃圾回收(优化仓库,清理无用对象)。

  • 用法

    bash

    bash 复制代码
    git gc                    # 自动执行垃圾回收

三、常用命令优先级(按使用频率排序)

高频核心(日常 80% 场景)

  1. git status:随时查看文件状态
  2. git add:暂存变更
  3. git commit:提交版本
  4. git branch/git switch:分支管理
  5. git pull/git push:远程同步
  6. git log:查看历史
  7. git diff:对比差异

中高频(协作 / 调试)

  1. git merge:合并分支
  2. git stash:暂存临时变更
  3. git reset:回滚提交
  4. git clone:克隆仓库
  5. git remote:管理远程仓库
  6. git revert:安全回滚版本

低频但关键(应急 / 进阶)

  1. git rebase:整理提交历史
  2. git cherry-pick:复用提交
  3. git reflog:恢复误操作
  4. git clean:清理工作区
  5. 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 的最佳方式。

相关推荐
春日见11 小时前
如何创建一个PR
运维·开发语言·windows·git·docker·容器
stevenzqzq1 天前
git 常用操作
大数据·git
Curvatureflight1 天前
Git工作流最佳实践:从混乱到优雅
git
wu~9701 天前
GitHub永不遗忘,使用git push -f来覆盖的提交依旧保留
git·github
Vermouth_001 天前
git clone的时候提示access denied
git
qq_437657271 天前
清楚本地的git并重新登录
git
jiang_changsheng1 天前
工作流agent汇总分析 2
java·人工智能·git·python·机器学习·github·语音识别
顶点多余2 天前
版本控制器-git
linux·git
夔曦2 天前
Git工程日常下拉/上传完整流程(自用)
git
岱宗夫up2 天前
GitHub Desktop如何设置中文?这不是个简单问题
git·github