Git 命令速查表

命令 分类 说明 示例
整理 194 条 Git 命令,按仓库初始化、分支管理、撤销回退等 12 个场景分类,含用途说明与可复制示例。

这份速查表包含什么

这里整理了 194 条 Git 命令,按使用场景分成 12 类,每条都给出了命令本身、所属场景、用途说明和一个可直接复制的示例。既适合刚开始用 Git 的新手按场景查找,也适合老手当作日常备查手册。

分类数量主要用途
仓库初始化12init、clone、remote 配置
提交与修改18add、commit、amend、签名
分支管理20branch、checkout、switch、分支清理
远程协作17fetch、pull、push、upstream
撤销与回退14reset、revert、restore、reflog
暂存与清理14stash、clean、忽略规则
查看历史23log、diff、blame、bisect
标签管理10tag、release 相关
合并与变基16merge、rebase、cherry-pick
配置与别名16config、alias、hooks
子模块与工作树12submodule、worktree、sparse-checkout
高级技巧22性能、排错、仓库维护

三个最值得记住的概念

工作区 / 暂存区 / 版本库。 Git 的文件有三种状态:工作区里改动的文件是「已修改」,git add 之后进入暂存区变成「已暂存」,git commit 之后才写入版本库成为「已提交」。绝大多数「我改了但提交没生效」的问题,都是漏了 add 这一步。

分支只是指针。 Git 的分支不是目录副本,而是一个指向某次提交的轻量指针。所以创建和切换分支几乎不耗时,HEAD 就是「当前你在哪个指针上」的标记。

提交是可寻址的完整快照。 每次提交都有唯一的 SHA-1 哈希,记录了当时整个项目的状态。只要提交还在,就永远可以回到那个状态——这正是 reflog 与 reset 能救命的原因。


几条高频命令与它们的坑

命令作用注意
git commit --amend修改最近一次提交已推送到远端的提交不要 amend,会造成历史分叉
git reset --hard丢弃工作区与暂存区改动不可恢复,执行前先确认或用 git stash
git rebase变基,整理提交历史只对尚未推送的本地提交使用,已共享的分支禁止变基
git revert生成一个反向提交来撤销安全,适合已推送的提交
git checkout -- .丢弃所有工作区改动新版本推荐用 git restore .,语义更清晰
git push --force-with-lease强制推送但检查远端状态比 --force 安全,能避免覆盖他人提交

使用方式

  • 在搜索框输入命令片段、场景或关键词,如 rebase、撤销、stash;
  • 点击分类标签按场景筛选;
  • 点击命令或示例文本即可一键复制,粘贴到终端执行。

给新手的三条建议

第一,多用 git status。 它几乎能回答你 80% 的疑问:当前在哪个分支、哪些文件改动了、哪些已暂存、有没有未推送的提交。

第二,动手前先建分支。 只要不在主分支上直接折腾,出错的代价就很小。哪怕只是一个实验,git switch -c try-xxx 也只是瞬间的事。

第三,遇到「完了」的时刻先别慌。 git reflog 会记录 HEAD 的每一次移动,绝大多数误操作(误 reset、误删分支、误 rebase)都能通过它找回。Git 里真正会丢数据的情况比想象中少得多。

常见问题 FAQ

新手最该先掌握哪些命令?

优先掌握 git status、git add、git commit、git log、git switch、git pull、git push 这七个,日常开发中大部分操作都靠它们。

git bisect 是做什么的?

二分查找定位引入问题的提交。先标记已知正常和已知异常的两个提交,Git 会自动二分并让你逐步确认,快速缩小问题范围。

怎么临时保存当前改动去做别的事?

用 git stash 把改动暂存起来,处理完其他事情后用 git stash pop 恢复。加 -u 参数可一并暂存未跟踪文件。

git push --force 和 --force-with-lease 有什么不同?

--force 会无条件覆盖远端;--force-with-lease 会先检查远端是否与本地预期一致,能避免覆盖他人的新提交,更安全。

误删了分支怎么找回?

用 git reflog 找到该分支最后一次提交的哈希,再执行 git branch <分支名> <哈希> 恢复。

rebase 和 merge 有什么区别?

merge 保留分支结构并生成合并提交;rebase 把提交「搬」到新基点,历史更线性。rebase 只应用于尚未推送的本地提交。

已经推送的提交要撤销,用 reset 还是 revert?

应该用 git revert,它会生成一个反向提交来抵消改动,不修改已有历史,对协作者安全。

commit 之后想改提交信息怎么办?

用 git commit --amend 修改最近一次提交。如果已经推送到远端,amend 会导致历史分叉,需谨慎处理。

git reset --hard 之后还能恢复吗?

可以尝试。先用 git reflog 找到操作前的提交哈希,再执行 git reset --hard <哈希> 回到那个状态。但未提交的工作区改动无法恢复。

改了文件但提交没生效,是什么原因?

最常见的原因是漏了 git add。只有进入暂存区的改动才会被 commit 记录,可用 git status 确认当前状态。

Git 的三个区域分别是什么?

工作区(实际文件)、暂存区(git add 后的待提交内容)、版本库(git commit 后的历史记录)。文件在三个区域之间流转。

这个速查表收录了多少条命令?

共 194 条,分为仓库初始化、提交与修改、分支管理、远程协作、撤销与回退、暂存与清理、查看历史、标签管理、合并与变基、配置与别名、子模块与工作树、高级技巧 12 类。