目 录CONTENT

文章目录

Git 命令速查表

hananww
2026-06-15 / 0 评论 / 0 点赞 / 36 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Git 的核心不仅是记忆命令,更是理解 “工作区 → 暂存区 → 本地仓库 → 远程仓库” 这四个区域的数据流转。

以下为你整理的 Git 命令全景图,已按使用频率和场景分类,涵盖从日常开发到紧急救火的所有关键操作。

1. 配置与初始化

💡 提示:全局配置只需设置一次,仓库级配置优先级更高。

命令 说明 频率 备注/示例
git config --global user.name "Name" 设置全局用户名 ⭐⭐⭐ 提交记录的身份标识
git config --global user.email "x@y.com" 设置全局邮箱 ⭐⭐⭐ 需与 GitHub/GitLab 邮箱一致
git config --global core.editor code 设置默认编辑器 ⭐⭐ 推荐 VS Code (code --wait)
git config --list 查看所有配置 ⭐⭐ --show-origin可查看配置来源
git init 初始化本地仓库 ⭐⭐⭐ 在项目根目录执行
git clone <url> 克隆远程仓库 ⭐⭐⭐ 支持 HTTPS / SSH 协议
git clone -b <branch> <url> 克隆指定分支 ⭐⭐ 避免拉取全部分支历史
git clone --depth 1 <url> 浅克隆(仅最新提交) ⭐⭐ 大型仓库节省空间和时间

2. 日常工作流(核心高频)

💡 黄金法则:小步提交,频繁提交,每次提交只做一件事。

命令 说明 频率 备注/示例
git status 查看工作区/暂存区状态 ⭐⭐⭐⭐⭐ 最常用命令,养成随时执行的习惯
git add <file> 添加指定文件到暂存区 ⭐⭐⭐⭐⭐ 精确控制提交内容
git add . 添加所有变更到暂存区 ⭐⭐⭐⭐ 确认无意外文件时使用
git add -p 交互式选择代码块暂存 ⭐⭐⭐ 同一文件部分修改时极有用
git commit -m "msg" 提交暂存区内容 ⭐⭐⭐⭐⭐ 遵循 Conventional Commits 规范
git commit --amend 修改最后一次提交 ⭐⭐⭐ 补漏文件或修改信息,未推送时用
git diff 查看工作区 vs 暂存区差异 ⭐⭐⭐⭐ 提交前必查
git diff --staged 查看暂存区 vs 上次提交差异 ⭐⭐⭐ 确认即将提交的内容
git restore <file> 撤销工作区修改 ⭐⭐⭐ 替代旧的 git checkout -- <file>
git restore --staged <file> 取消暂存 ⭐⭐⭐ 替代旧的 git reset HEAD <file>
git rm <file> 删除文件并记录到暂存区 ⭐⭐ 仅删文件用 rm,Git 不会追踪
git mv <old> <new> 重命名/移动文件 ⭐⭐ 保留文件历史记录

3. 分支管理

💡 原则:主分支永远保持可部署状态,所有开发在特性分支进行。

命令 说明 频率 备注/示例
git branch 列出本地分支 ⭐⭐⭐⭐ -a查看所有,-r查看远程
git branch <name> 创建新分支 ⭐⭐⭐⭐ 仅创建不切换
git switch <name> 切换到已有分支 ⭐⭐⭐⭐⭐ 替代 checkout,语义更清晰
git switch -c <name> 创建并切换新分支 ⭐⭐⭐⭐⭐ 等同于 checkout -b
git merge <branch> 合并分支到当前分支 ⭐⭐⭐⭐ 产生合并提交,保留完整历史
git rebase <branch> 变基(线性化历史) ⭐⭐⭐ 禁止对公共分支 rebase
git cherry-pick <commit> 拣选特定提交到当前分支 ⭐⭐⭐ 跨分支同步单个修复
git branch -d <name> 删除已合并分支 ⭐⭐⭐ -D强制删除未合并分支
git stash 临时保存工作区修改 ⭐⭐⭐ 切分支前不想提交时用
git stash pop 恢复最近一次 stash ⭐⭐⭐ stash list查看,apply不删除

4. 远程协作

💡 安全准则:推送前务必先拉取,解决冲突后再推送。

命令 说明 频率 备注/示例
git fetch 获取远程更新(不合并) ⭐⭐⭐⭐ 安全预览远程变更
git pull 拉取并合并远程更新 ⭐⭐⭐⭐⭐ =fetch+merge
git pull --rebase 拉取并变基 ⭐⭐⭐ 保持线性历史,推荐团队使用
git push 推送到远程对应分支 ⭐⭐⭐⭐⭐ 首次推送用 -u建立追踪关系
git push origin <branch> 推送指定分支 ⭐⭐⭐ 显式指定更安全
git push --force-with-lease 安全强推 ⭐⭐ --force安全,防止覆盖他人提交
git remote -v 查看远程仓库地址 ⭐⭐ 确认推送目标
git remote add <name> <url> 添加远程仓库 ⭐⭐ 多远程源管理(如 fork 上游)

5. 历史查看与考古

💡 技巧:善用 --oneline--graph 组合获得紧凑的可视化历史。

命令 说明 频率 备注/示例
git log --oneline --graph 紧凑图形化日志 ⭐⭐⭐⭐ 最常用的历史查看方式
git log -p <file> 查看文件每次提交的diff ⭐⭐⭐ 追溯文件演变过程
git blame <file> 逐行显示最后修改者 ⭐⭐⭐ IDE 内置 GitLens 体验更好
git reflog 查看所有引用变更历史 ⭐⭐⭐ 救命命令,找回丢失的提交
git bisect start/good/bad 二分查找引入Bug的提交 ⭐⭐ 自动化定位回归问题
git shortlog -sn 按作者统计提交数 项目贡献度分析

6. 标签与发布

命令 说明 频率 备注/示例
git tag v1.0.0 创建轻量标签 ⭐⭐ 仅指针,无附加信息
git tag -a v1.0.0 -m "msg" 创建附注标签 ⭐⭐⭐ 推荐,包含作者、日期、说明
git push origin --tags 推送所有标签 ⭐⭐ 标签默认不随 push 上传
git describe --tags 基于最近标签描述当前提交 ⭐⭐ CI/CD 自动生成版本号

7. 高级与急救(低频但关键)

⚠️ 警告:以下命令可能改变历史或丢失数据,操作前建议备份或确认影响范围。

命令 说明 频率 备注/示例
git reset --soft <commit> 回退提交,保留修改在暂存区 ⭐⭐ 合并多个连续提交
git reset --mixed <commit> 回退提交,保留修改在工作区 ⭐⭐ 默认模式,重新组织提交
git reset --hard <commit> 硬回退,丢弃所有修改 危险,配合 reflog 可恢复
git revert <commit> 生成反向提交来撤销变更 ⭐⭐⭐ 公共分支撤销的安全方式
git clean -fd 删除未追踪的文件和目录 ⭐⭐ -n先预览,-x连忽略文件也删
git worktree add <path> <branch> 同时检出多个分支到不同目录 ⭐⭐ 并行处理多分支无需 stash
git submodule update --init 初始化子模块 嵌套仓库管理
git gc 垃圾回收与优化 仓库过大时手动执行

🧠 核心概念速记卡

为了真正掌握 Git,请将以下模型刻入脑海:

工作区 (Working Directory)
    │ git add
    ▼
暂存区 (Staging Area / Index)
    │ git commit
    ▼
本地仓库 (Local Repository)
    │ git push
    ▼
远程仓库 (Remote Repository)
  • reset vs revertreset 改写历史(私有分支用),revert 新增提交撤销变更(公共分支用)。
  • merge vs rebasemerge 保留真实历史(有合并节点),rebase 创造线性历史(更干净但改写哈希)。
  • restore vs reset:撤销文件修改用 restore(安全、语义明确),回退提交用 reset
  • switch vs checkout:Git 2.23+ 推荐用 switch 切分支、restore 撤销修改,checkout 因职责过多已被逐步弃用。

🎯 新手上路建议

  1. 先学高频命令:把第 2、3、4 节的 ⭐⭐⭐⭐⭐ 命令练到肌肉记忆,足以应对 90% 的日常开发。
  2. 安装可视化工具辅助理解:推荐 GitLens(VS Code 插件)或 Fork/Sourcetree。先用 GUI 理解数据流,再过渡到命令行。
  3. 搭建练习沙盒:在本地创建一个测试仓库,故意制造冲突、误删提交、错误合并,然后用 reflog + reset 恢复。在安全环境中犯错是学会 Git 的最快路径
  4. 配置别名提升效率:将长命令设为快捷键,例如:
    git config --global alias.st status
    git config --global alias.co switch
    git config --global alias.br branch
    git config --global alias.lg "log --oneline --graph --all"
    
0

评论区