Git 高级命令速查表
本速查表面向已经掌握 Git 基础操作的开发者,深入讲解 Rebase 交互模式、二分查找、引用日志、精选提交、子模块管理和工作树等高级主题。掌握这些命令能显著提升日常开发效率。
更新: 2026-07-17·37 条命令
概述
本速查表涵盖 Git 基础操作之外的高级功能。掌握这些命令可以应对复杂的版本控制场景。
快速开始
``bash
git rebase -i HEAD~3 # 交互式变基最近 3 个提交
git reflog # 查看引用日志
git bisect start # 开始二分查找
``
详细用法请参阅下方命令表格。
Rebase(13)
| 命令 | 难度 | ||
|---|---|---|---|
git rebase -i [base]以交互模式变基,允许对提交进行编辑、合并、删除、重排等操作 | 中级 | git rebase -i HEAD~5 | |
git rebase --onto newbase oldbase [branch]将 branch 上从 oldbase 之后的提交变基到 newbase 上,用于精确控制提交移植 | 高级 | git rebase --onto master feature~3 feature | |
git rebase --abort中止当前有冲突的变基操作,恢复到变基前的状态 | 中级 | git rebase --abort | |
git rebase --continue解决冲突后继续执行变基操作 | 中级 | git rebase --continue | |
git rebase --skip跳过当前导致冲突的提交,继续变基 | 中级 | git rebase --skip | |
git stash -u [message]暂存工作区的修改,包括未跟踪的文件(--include-untracked) | 中级 | git stash -u WIP-refactoring | |
git stash --keep-index [message]暂存工作区的修改,但保留已暂存的更改(保持索引不变) | 中级 | git stash --keep-index "temp save unstaged" | |
git stash branch branchname [stash]从指定的 stash 创建新分支并应用 stash,适用于因冲突无法正常 pop 的场景 | 高级 | git stash branch fix-feature stash@{1} | |
git clean -fd强制删除工作目录中所有未跟踪的文件和目录 | 中级 | git clean -fd | |
git grep [pattern] [revision]在 Git 仓库中搜索匹配指定模式的行,支持在指定版本中搜索 | 中级 | git grep "TODO" v2.0.0 | |
git shortlog [options]按作者汇总提交信息,常用于生成变更日志 | 中级 | git shortlog -sn --since="2026-01-01" | |
git describe [ref]基于最近的标签为提交生成一个可读的名称,格式为 tag-N-gHASH | 中级 | git describe --tags --abbrev=4 HEAD | |
git rebase --abort取消正在进行的 rebase 操作,回到 rebase 前的状态 | 基础 | git rebase --abort |
Bisect(5)
| 命令 | 难度 | ||
|---|---|---|---|
git bisect start [bad [good...]]启动二分查找会话,标记已知的好和坏的提交范围 | 高级 | git bisect start HEAD v1.0.0 | |
git bisect bad [rev]将当前或指定提交标记为坏的(包含 bug) | 高级 | git bisect bad | |
git bisect good [rev]将当前或指定提交标记为好的(不包含 bug) | 高级 | git bisect good v1.0.0 | |
git bisect reset结束二分查找会话,将 HEAD 恢复到查找前的位置 | 高级 | git bisect reset | |
git bisect log显示当前二分查找会话的日志,可用于重放或调试查找过程 | 高级 | git bisect log |
Reflog(3)
| 命令 | 难度 | ||
|---|---|---|---|
git reflog show [ref]显示指定引用的操作历史记录(默认为 HEAD),可恢复丢失的提交 | 中级 | git reflog show --date=iso HEAD | |
git reflog delete [entry]从 reflog 中删除指定的条目 | 高级 | git reflog delete HEAD@{2} | |
git reflog expire [options]使过期的 reflog 条目过期并清理,通常由 git gc 自动执行 | 高级 | git reflog expire --expire=30.days --all |
Cherry-pick(5)
| 命令 | 难度 | ||
|---|---|---|---|
git cherry-pick [commit]将指定提交的变更应用到当前分支,生成新的提交 | 中级 | git cherry-pick a1b2c3d | |
git cherry-pick -n [commit]应用指定提交的变更到工作区和暂存区,但不自动创建提交 | 中级 | git cherry-pick -n a1b2c3d | |
git cherry-pick -x [commit]应用指定提交并自动在提交信息中添加来源引用(cherry picked from ...) | 中级 | git cherry-pick -x a1b2c3d | |
git cherry-pick --signoff [commit]应用指定提交并在提交信息中添加 Signed-off-by 签名行 | 中级 | git cherry-pick --signoff a1b2c3d | |
git cherry-pick <commit>将指定提交的更改应用到当前分支 | 基础 | git cherry-pick abc123 |
子模块(6)
| 命令 | 难度 | ||
|---|---|---|---|
git submodule add [repository] [path]添加一个新的子模块到仓库中 | 中级 | git submodule add https://github.com/example/lib lib | |
git submodule update [--init] [--recursive]更新子模块到其注册的提交记录,--init 初始化未初始化的子模块 | 中级 | git submodule update --init --recursive | |
git submodule init基于 .gitmodules 文件初始化子模块配置 | 中级 | git submodule init | |
git submodule foreach [command]在每一个子模块中执行指定的命令 | 高级 | git submodule foreach git pull origin main | |
git submodule status [--recursive]显示子模块的当前状态,包括提交哈希和是否已初始化 | 中级 | git submodule status --recursive | |
git submodule deinit [path]反初始化子模块,从工作树中移除子模块文件但保留 .gitmodules 配置 | 高级 | git submodule deinit -f lib |
工作树(5)
| 命令 | 难度 | ||
|---|---|---|---|
git worktree add [path] [branch]在新目录中检出一个新的工作树,关联指定的分支 | 中级 | git worktree add ../hotfix hotfix-branch | |
git worktree list列出此仓库关联的所有工作树及其路径和分支信息 | 中级 | git worktree list | |
git worktree prune [options]清理已删除或不可达的工作树记录 | 高级 | git worktree prune --expire 30.days | |
git worktree remove [path]删除指定路径的工作树同时保留仓库数据 | 中级 | git worktree remove ../hotfix | |
git worktree lock [path]锁定工作树以防止其被清理(prune)或删除 | 中级 | git worktree lock ../hotfix --reason "active bugfix" |
常见问题
本速查表数据整理自各工具官方文档。最后更新: 2026-07-17。