📖 Git 命令速查表

选择一个场景,查看相关命令:

Git 工作流

WD
工作目录
Working Directory
add
git add
SA
暂存区
Staging Area
commit
git commit
C
本地仓库
Local Repo
push
git push
R
远程仓库
Remote
git pull / git fetch / git clone
远程 → 本地
分支 (Branch)
C1
C2
HEAD → main
○ git branch创建分支 | ⇄ git merge合并分支 | ⚡ git rebase变基
常用
git init
初始化一个新的 Git 仓库,在当前目录创建 .git 子目录
git init my-project
常用
git clone <url>
克隆远程仓库到本地,包含完整的提交历史和所有分支
git clone https://github.com/user/repo.git
常用
git add <file>
将文件修改添加到暂存区,准备提交
git add index.html
git add . # 添加所有修改
常用
git commit -m "message"
将暂存区的修改提交到本地仓库,附带提交信息
git commit -m "feat: 添加登录功能"
常用
git status
查看工作目录和暂存区的状态,显示哪些文件被修改、暂存或未跟踪
git status -s # 简短格式输出
git diff
查看工作目录中尚未暂存的改动差异
git diff
git diff HEAD # 所有改动
git diff --staged # 已暂存的改动
git rm <file>
从版本控制中删除文件,并从工作目录中移除
git rm old-file.txt
git rm --cached file.txt # 仅从版本库移除,保留本地文件
git mv <old> <new>
移动或重命名文件,相当于 mv + git rm + git add 的组合
git mv old-name.js new-name.js
git clean -fd
删除工作目录中所有未跟踪的文件和目录
git clean -fd
git clean -n # 预览将要删除的文件
常用
git branch
列出所有本地分支,当前分支前有 * 标记
git branch -a # 列出所有分支(含远程)
git branch -r # 仅列出远程分支
常用
git checkout -b <branch>
创建新分支并立即切换到该分支
git checkout -b feature/login
常用
git switch <branch>
切换到指定分支(Git 2.23+ 推荐使用 switch 代替 checkout 切换分支)
git switch main
git switch -c new-feature # 创建并切换
常用
git merge <branch>
将指定分支合并到当前分支
git merge feature/login
git merge --no-ff feature/login # 禁用快进合并
git branch -d <branch>
删除本地分支(仅当分支已合并时才允许删除)
git branch -d feature/old
git branch -D feature/old # 强制删除
git branch -m <old> <new>
重命名分支
git branch -m old-name new-name
git merge --abort
放弃当前的合并操作,恢复到合并前的状态
git merge --abort
git rebase <branch>
变基:将当前分支的提交重新应用到目标分支上,使历史更加线性
git rebase main
git rebase --abort # 放弃变基
常用
git reset HEAD <file>
将文件从暂存区移回工作目录,取消暂存
git reset HEAD app.js
git restore --staged app.js # 新语法
常用
git checkout -- <file>
丢弃工作目录中文件的修改,恢复到上次提交的状态
git checkout -- config.ini
git restore config.ini # 新语法
git reset --soft HEAD~1
撤销上次提交,保留修改在暂存区
git reset --soft HEAD~1
git reset --mixed HEAD~1
撤销上次提交,保留修改在工作目录(默认行为)
git reset HEAD~1
git reset --mixed HEAD~1
git reset --hard HEAD~1
彻底撤销上次提交,丢弃所有修改(不可逆,谨慎使用)
git reset --hard HEAD~1
git revert <commit>
创建一个新提交来撤销指定提交的修改,安全可追溯
git revert abc1234
git revert HEAD # 撤销最近一次提交
git restore --staged <file>
将暂存区的文件移回工作目录(Git 2.23+ 推荐)
git restore --staged package.json
git restore <file>
丢弃工作目录中文件的修改(Git 2.23+ 推荐)
git restore src/main.js
常用
git push origin <branch>
将本地分支推送到远程仓库
git push origin main
git push -u origin main # 设置上游并推送
常用
git pull origin <branch>
从远程仓库拉取并合并(fetch + merge)
git pull origin main
git pull --rebase origin main # 拉取并变基
git remote -v
查看所有远程仓库的 URL(包括 fetch 和 push 地址)
git remote -v
git remote add <name> <url>
添加新的远程仓库,通常命名为 origin
git remote add origin https://github.com/user/repo.git
git fetch origin
从远程仓库获取最新的提交和数据,但不合并到本地分支
git fetch origin
git fetch --all # 获取所有远程仓库
git push origin --delete <branch>
删除远程分支
git push origin --delete feature/old
git remote remove <name>
移除指定的远程仓库
git remote remove upstream
git tag
列出所有标签
git tag
git tag -l "v2.*" # 按模式过滤
git tag <tagname>
给当前 HEAD 创建一个轻量标签
git tag v1.0.0
git tag -a <tagname> -m "msg"
创建附注标签,包含标签信息、日期和作者
git tag -a v2.0.0 -m "版本 2.0 正式发布"
git push origin <tagname>
将指定标签推送到远程仓库
git push origin v1.0.0
git push origin --tags # 推送所有标签
git tag -d <tagname>
删除本地标签
git tag -d v1.0.0
git push origin --delete <tagname>
删除远程标签
git push origin --delete v1.0.0
git checkout <tagname>
切换到标签对应的提交(分离 HEAD 状态)
git checkout v2.0.0
git checkout -b release-v2 v2.0.0 # 基于标签创建分支
常用
git stash
临时保存当前工作目录和暂存区的修改,恢复干净的工作区
git stash
git stash save "未完成的功能"
常用
git stash pop
恢复最近一次 stash 的修改并从 stash 列表中删除
git stash pop
git stash pop stash@{1} # 恢复指定的 stash
git stash list
查看所有 stash 列表
git stash list
git stash apply
恢复最近一次 stash 的修改,但保留 stash 记录
git stash apply
git stash apply stash@{2}
git stash drop
删除指定的 stash 记录
git stash drop stash@{0}
git stash clear # 清空所有 stash
git stash show -p
查看 stash 中保存的具体修改内容
git stash show -p stash@{0}
常用
git log
查看完整的提交历史,按时间倒序排列
git log
git log -5 # 最近 5 条
常用
git log --oneline
每条提交只显示一行,简洁查看历史
git log --oneline
git log --oneline --graph # 含分支图
git log --graph --all --decorate
以 ASCII 图形显示所有分支的提交历史
git log --graph --all --decorate --oneline
git log --author="name"
查看指定作者的提交记录
git log --author="张三"
git log --author="zhang@email.com"
git log --since="date"
查看指定日期之后的提交
git log --since="2024-01-01"
git log --after="1 week ago"
git log -p <file>
查看指定文件的历史修改详情
git log -p src/app.js
git blame <file>
逐行显示文件的修改历史和责任人
git blame src/utils.js
git blame -L 10,20 file.js # 指定行范围
git reflog
显示 HEAD 的变动历史,包括被撤销的操作(救命命令)
git reflog
git reflog show main
git show <commit>
显示某次提交的详细信息和修改内容
git show HEAD
git show abc1234:src/app.js # 查看某次提交的某个文件
git cherry-pick <commit>
将指定提交的修改应用到当前分支
git cherry-pick abc1234
git cherry-pick abc1234..def5678 # 应用一系列提交
git rebase -i HEAD~N
交互式变基:压缩、重排、编辑最近的 N 次提交
git rebase -i HEAD~3
# pick = 保留, squash = 合并, reword = 重命名
git bisect start
开始二分查找,定位引入 bug 的提交
git bisect start
git bisect bad HEAD
git bisect good v1.0.0
git bisect reset # 结束二分查找
git submodule add <url>
添加子模块,在一个仓库中包含另一个仓库
git submodule add https://github.com/lib/theme.git
git worktree add <path> <branch>
在另一个目录中检出分支,可同时在不同分支上工作
git worktree add ../hotfix hotfix/bug
git worktree list # 列出所有工作树
git filter-branch
重写大量提交历史(如删除敏感文件、修改作者信息等,建议用 git-filter-repo 替代)
git filter-branch --tree-filter 'rm -f secret.key' HEAD
git commit --amend
修改最近一次提交的信息或内容(不要修改已推送的提交)
git commit --amend -m "修正后的提交信息"
git commit --amend --no-edit # 只追加修改不改变信息
git config --global alias.<name> <cmd>
创建 Git 命令别名,简化常用操作
git config --global alias.co checkout
git config --global alias.lg "log --oneline --graph"
git rebase --onto <newbase> <oldbase> <branch>
将分支从 oldbase 之后的提交移植到 newbase 上
git rebase --onto main feature/old feature/new
git format-patch <base>
生成补丁文件,可用于邮件发送或离线传输
git format-patch origin/main
git am *.patch # 应用补丁

键盘快捷键

/聚焦搜索框
Esc清空搜索
V切换详细/简单视图
1-8分类切换 (1=全部,2=基础...)
浏览命令卡片
Enter复制当前高亮命令
Ctrl/Cmd+K清空搜索并聚焦
?显示/隐藏快捷键帮助
已复制到剪贴板