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 的最佳方式。

相关推荐
莫陌尛.3 小时前
git版本提交后撤销
git
siqiangming17 小时前
将SVN项目迁移到Git,保留提交记录
git·svn
CCPC不拿奖不改名17 小时前
两种完整的 Git 分支协作流程
大数据·人工智能·git·python·elasticsearch·搜索引擎·自然语言处理
南方者17 小时前
【Sourcetree】【Git】提交后无法推送,优雅回滚
git·版本管理·sourcetree·回滚·贮藏
lpfasd12319 小时前
PyGithub用法详解
git·python·github
一品威客网20 小时前
版本控制(Git):APP协同开发的四大核心基石
大数据·git
007张三丰21 小时前
git中的SSH 公钥配置详细指南(GitHub、GitLab、Gitee平台适用)
git·ssh·github
yue0081 天前
git使用
git
tianlebest1 天前
git action
大数据·git·elasticsearch