全部速查表

Git 命令速查

日常高频 Git 命令快速参考:init、clone、branch、merge、rebase、reset、stash、远程操作、历史查询,并附带常用参数和实操示例。

31 条命令

入门

git init

在当前目录创建一个新的 Git 仓库。

git init my-project
git clone <url>

将远程仓库拷贝到本地,包括完整历史记录。

--depth 1 浅克隆(仅最新提交);-b <branch> 克隆指定分支

git clone -b main --depth 1 https://github.com/user/repo.git
git config

设置用户名、邮箱等配置;--global 作用于所有仓库。

git config --global user.name "Your Name" && git config --global user.email "[email protected]"

日常操作

git status

查看工作区状态:已修改、已暂存、未跟踪的文件。

-s 短格式;-b 显示分支信息

git status -sb
git add <file>

将文件变更添加到暂存区,准备下一次提交。

-A 暂存所有变更;-p 交互式挑选片段;-u 仅暂存被跟踪的文件

git add -p src/index.ts
git commit

将暂存的变更记录为一次提交。

-m 提交信息;-a 暂存被跟踪的文件并提交;--amend 改写上一次提交

git commit -am "fix: 处理空输入"
git diff

查看工作区、暂存区、各提交之间的行级差异。

--staged 与上次提交的差异;<branch> 与某分支的差异;--stat 只显示摘要

git diff --staged --stat
git restore <file>

丢弃工作区未提交的修改(配合 --staged 可取消暂存)。

git restore --staged src/index.ts

分支

git branch

列出、创建或删除分支。

-d 删除;-D 强制删除;-m 重命名;-a 同时列出远程分支

git branch -m old-name new-name
git switch <branch>

切换到其他分支;-c 先创建分支再切换(替代旧的 checkout)。

git switch -c feature/login
git merge <branch>

将其他分支合并到当前分支。

--no-ff 总是生成合并提交;--abort 取消正在进行的合并

git merge --no-ff feature/login
git rebase <branch>

将当前分支的提交“重放到”另一个分支顶端,得到线性历史。

-i 交互式(合并/改写/重排);--abort 取消;--continue 解决后继续

git rebase -i HEAD~3

远程

git remote -v

列出已配置的远程仓库及其地址。

git remote add origin https://github.com/user/repo.git
git fetch

从远程下载对象与引用,但不合并。

--prune 删除过时的远程跟踪分支;--all 获取所有远程

git fetch --prune origin
git pull

从远程获取并合并(或 rebase)到当前分支。

--rebase 改为 rebase;--ff-only 仅快进合并

git pull --rebase origin main
git push

将本地提交推送到远程仓库。

-u 设置上游跟踪;--force-with-lease 更安全的强推;--tags 推送标签

git push -u origin feature/login

撤销与修复

git reset

将 HEAD 移动到其他提交,可选是否同时修改暂存区与工作区。

--soft 保留变更在暂存区;--mixed(默认)保留变更在工作区;--hard 丢弃所有变更

git reset --hard HEAD~1
git revert <commit>

生成一次新提交来撤销之前的某次提交,对共享历史安全。

git revert HEAD
git commit --amend

改写最近一次提交:补充漏掉的文件或修改提交信息。

--no-edit 保留原提交信息

git commit --amend --no-edit
git clean

删除工作区未跟踪的文件。

-n 预览;-f 强制;-d 包含目录;-x 包含被忽略的文件

git clean -ndx

历史与查看

git log

查看提交历史。

--oneline 每条一行;--graph 分支图;-p 显示差异;-n 限制条数

git log --oneline --graph -15
git show <commit>

显示某次提交的说明与差异;也可用于标签或文件(git show HEAD:file)。

git show HEAD~2 --stat
git blame <file>

逐行显示文件的最后修改者与对应提交。

-L n,m 仅显示指定行范围

git blame -L 10,20 src/index.ts
git reflog

查看 HEAD 的移动历史——可在 reset/rebase 出错后找回“丢失”的提交。

git reflog -20

暂存

git stash

临时搁置未提交的修改,让工作区恢复干净。

-u 包含未跟踪文件;push -m 说明;list 列出所有 stash

git stash push -u -m "wip: 登录表单"
git stash pop

恢复最近的 stash 并从 stash 列表中移除。

apply 恢复但保留 stash 条目

git stash apply stash@{1}

标签与发布

git tag

列出、创建或删除用于标记发布点的标签。

-a 注释标签;-m 说明;-d 删除

git tag -a v1.2.0 -m "Release 1.2.0"
git describe --tags

显示当前提交可达的最近标签及距离。

git describe --tags --always

高级

git cherry-pick <commit>

将指定提交的变更应用到当前分支。

-n 应用但不提交;-x 在提交信息中追加源提交哈希

git cherry-pick -x a1b2c3d
git bisect

通过二分查找定位引入 bug 的提交。

start / bad / good / run <cmd> / reset

git bisect start && git bisect bad && git bisect good v1.0.0
git worktree add <path> <branch>

在同一仓库中以独立目录签出其他分支。

git worktree add ../hotfix hotfix/urgent-bug

速查页版本 1.0.0

适用于 Git 2.30+