Git命令大全

145个常用Git命令速查表,覆盖配置、提交、分支、合并、远程、撤销等场景,含中文说明与示例,一键复制。

Git 命令大全
145 个常用Git命令 · 提交/分支/合并/远程/撤销/日志 全场景覆盖

配置与初始化全局/仓库配置、别名、初始化与克隆 · 14 条

命令 / 语法描述示例 (Example)操作
git config --global user.name "Your Name"设置全局提交用户名git config --global user.name "Zhang San"
git config --global user.email "[email protected]"设置全局提交邮箱git config --global user.email "[email protected]"
git config --global core.editor "code --wait"设置默认编辑器git config --global core.editor "code --wait"
git config --global alias.st status设置命令别名(st=status)git config --global alias.co checkout
git config --global init.defaultBranch main设置新建仓库的默认分支名git config --global init.defaultBranch main
git config --global pull.rebase true设置默认 pull 使用变基git config --global pull.rebase true
git config --list查看所有生效的配置git config --list
git config user.name查看当前仓库某项配置git config user.name
git init把当前目录初始化为 Git 仓库git init
git init --bare初始化裸仓库(通常用作服务端)git init --bare
git clone <url>克隆远程仓库到本地git clone https://github.com/user/repo.git
git clone -b <branch> <url>克隆并直接检出指定分支git clone -b dev https://github.com/user/repo.git
git clone <url> <dir>克隆到指定目录名git clone https://github.com/user/repo.git myrepo
git clone --depth 1 <url>浅克隆,只拉取最近一次提交历史git clone --depth 1 https://github.com/user/repo.git

远程仓库添加、查看、修改与清理远程 · 9 条

命令 / 语法描述示例 (Example)操作
git remote add origin <url>添加名为 origin 的远程git remote add origin https://github.com/user/repo.git
git remote -v查看远程地址(fetch/push)输出:origin https://github.com/user/repo.git (fetch)
git remote get-url origin查看某个远程的地址git remote get-url origin
git remote set-url origin <url>修改远程地址git remote set-url origin [email protected]:user/repo.git
git remote rename origin upstream重命名远程git remote rename origin upstream
git remote remove origin删除远程 高危git remote remove origin
git remote show origin查看远程分支与跟踪关系git remote show origin
git remote prune origin清理本地已不存在的远程跟踪分支git remote prune origin
git ls-remote origin查看远程引用(分支/标签)git ls-remote origin

工作区与暂存区查看状态、暂存、移动与丢弃改动 · 16 条

命令 / 语法描述示例 (Example)操作
git status查看工作区与暂存区状态输出:On branch main — nothing to commit, working tree clean
git status -s以简洁短格式查看状态git status -s
git add <file>将文件加入暂存区git add README.md
git add -A暂存所有改动(含新增与删除)git add -A
git add -u暂存已跟踪文件的修改与删除git add -u
git add -p交互式地暂存部分改动git add -p
git rm <file>从工作区与暂存区删除并登记git rm old.js
git mv <a> <b>移动/重命名并自动登记git mv a.js src/a.js
git restore <file>丢弃工作区未暂存的改动git restore app.js
git restore .丢弃所有未暂存的改动git restore .
git restore --staged <file>把文件移出暂存区(保留改动)git restore --staged app.js
git rm --cached <file>停止跟踪文件但保留在磁盘(不再纳入版本控制)git rm --cached secrets.env
git reset重置暂存区(默认 --mixed,保留改动)git reset
git diff查看未暂存的改动git diff
git diff --staged查看已暂存与上次提交的差异git diff --staged
git diff --cachedgit diff --staged 的别名git diff --cached

提交创建提交与修改最近提交 · 7 条

命令 / 语法描述示例 (Example)操作
git commit -m "msg"提交暂存区并写说明git commit -m "fix: 修复登录校验"
git commit -am "msg"自动暂存已跟踪文件后提交git commit -am "chore: update deps"
git commit --amend改写最近一次提交(改说明或补文件)git commit --amend -m "new message"
git commit --amend --no-edit补充文件但不改提交说明git commit --amend --no-edit
git commit --allow-empty -m "msg"创建一个空提交(触发 CI 等)git commit --allow-empty -m "trigger build"
git commit -v提交时同时查看完整差异git commit -v
git commit -C <hash>复用某次提交的提交信息git commit -C a1b2c3d

分支管理创建、切换、重命名与删除分支 · 16 条

命令 / 语法描述示例 (Example)操作
git branch列出本地分支(* 为当前)输出:* main feature/login
git branch -a列出本地与远程分支git branch -a
git branch -r列出远程跟踪分支git branch -r
git branch -vv查看本地分支及其上游跟踪git branch -vv
git branch <name>创建新分支(不切换)git branch feature/login
git checkout -b <name>创建并切换到新分支(旧写法)git checkout -b feature/login
git switch -c <name>创建并切换到新分支(2.23+ 推荐)git switch -c feature/login
git checkout <branch>切换到已有分支git checkout main
git switch <branch>切换到已有分支git switch main
git switch -切回上一个分支git switch -
git branch -d <name>删除已合并的本地分支git branch -d feature/login
git branch -D <name>强制删除本地分支 高危git branch -D feature/login
git branch -m <new>重命名当前分支git branch -m dev
git branch --merged列出已合入当前分支的分支git branch --merged
git branch --set-upstream-to=origin/<branch>为当前分支设置上游跟踪(无需重新推送)git branch --set-upstream-to=origin/main
git switch -C <name>强制创建并切换到新分支(若已存在则重置)git switch -C feature/login

合并与变基merge / rebase 及冲突处理 · 12 条

命令 / 语法描述示例 (Example)操作
git merge <branch>把指定分支合并进当前分支git merge feature/login
git merge --no-ff <branch>禁用快进,保留合并提交git merge --no-ff feature/login
git merge --ff-only <branch>仅允许快进合并git merge --ff-only main
git merge --abort取消进行中的合并git merge --abort
git rebase <branch>把当前分支变基到目标分支之上git rebase main
git rebase -i <hash>交互式变基(改写/合并提交)git rebase -i HEAD~3
git rebase --onto <base> <from> <to>把一段提交搬到新的基点上 注意git rebase --onto main feature old
git rebase --continue解决冲突后继续变基git rebase --continue
git rebase --abort取消进行中的变基git rebase --abort
git merge --squash <branch>把目标分支的改动压缩成一次提交(不自动生成合并提交)git merge --squash feature/login
git rebase --skip跳过当前冲突的提交,继续后续变基git rebase --skip
git cherry-pick <hash>把某次提交复制到当前分支git cherry-pick a1b2c3d

历史与差异查看提交、比较差异与逐行溯源 · 18 条

命令 / 语法描述示例 (Example)操作
git log查看提交历史输出:commit a1b2c3d4e5f (HEAD -> main) ...
git log --oneline以单行精简格式查看历史git log --oneline
git log -3只查看最近 N 次提交git log -3
git log -p显示每次提交的具体差异git log -p
git log --stat显示每次提交改动的文件统计git log --stat
git log --graph --oneline --all图形化展示所有分支历史git log --graph --oneline --all
git log --author="name"按作者筛选提交git log --author="Zhang"
git log --since="<date>"按时间范围筛选git log --since="2 weeks ago"
git log --grep="keyword"按提交说明搜索git log --grep="fix"
git log -S "keyword"按代码内容搜索(追踪某段代码的增删)git log -S "TODO"
git log <file>查看某文件的历史git log README.md
git diff <a> <b>比较两个提交/分支git diff main..feature
git diff --name-only只列出发生改动的文件名git diff --name-only main..feature
git diff --stat显示工作区改动的文件统计git diff --stat
git show <hash>查看某次提交的改动内容git show a1b2c3d
git blame <file>逐行查看每行的最后修改者git blame src/app.js
git shortlog -sn按作者统计提交数量git shortlog -sn
git whatchanged查看每次提交改动的文件列表git whatchanged

标签管理创建、推送、删除与检出标签 · 10 条

命令 / 语法描述示例 (Example)操作
git tag列出所有标签输出:v1.0.0 v0.9.1
git tag <name>创建轻量标签git tag v1.0.0
git tag -a <name> -m "msg"创建带说明的附注标签git tag -a v1.0.0 -m "release 1.0"
git tag -l "v1.*"按通配符列出标签git tag -l "v1.*"
git tag -d <name>删除本地标签 高危git tag -d v0.9
git push origin <tag>推送单个标签到远程git push origin v1.0.0
git push --tags推送全部本地标签git push --tags
git push origin :refs/tags/<name>删除远程标签 高危git push origin :refs/tags/v0.9
git checkout <tag>检出标签(进入游离 HEAD)git checkout v1.0.0
git describe --tags用最近的标签描述当前提交git describe --tags

暂存草稿临时保存未提交改动 · 10 条

命令 / 语法描述示例 (Example)操作
git stash暂存当前未提交的改动git stash
git stash push -m "msg"暂存并添加说明(Git 2.13+ 推荐写法)git stash push -m "WIP login"
git stash list查看暂存列表输出:stash@{0}: On main: WIP login
git stash pop恢复最近一次暂存并删除它git stash pop
git stash apply恢复最近一次但保留暂存git stash apply
git stash apply stash@{1}恢复指定的暂存git stash apply stash@{1}
git stash branch <name>基于某次暂存创建新分支git stash branch fix/login
git stash drop删除最近一次暂存 高危git stash drop
git stash clear清空所有暂存 高危git stash clear
git stash show -p查看暂存的具体内容差异git stash show -p stash@{0}

撤销与回滚安全撤销、回退与找回提交 · 9 条

命令 / 语法描述示例 (Example)操作
git revert <hash>生成反向提交来撤销(安全、可推送)git revert a1b2c3d
git revert -n <hash>把反向改动放入暂存区但不自动提交git revert -n a1b2c3d
git reset --soft <hash>回退提交但保留暂存区与工作区git reset --soft HEAD~1
git reset --mixed <hash>回退提交与暂存区(保留改动)git reset --mixed HEAD~1
git reset --hard <hash>彻底回退(丢弃改动,危险) 高危git reset --hard HEAD~1
git checkout -- <file>丢弃工作区某文件的改动(旧写法) 高危git checkout -- app.js
git clean -n预览将被删除的未跟踪文件git clean -n
git clean -fd删除未跟踪的文件与目录(危险) 高危git clean -fd
git reflog查看 HEAD 变动记录(找回丢失提交)输出:a1b2c3d4e5f HEAD@{0}: reset: moving to HEAD~1

同步与推送fetch / pull / push 及上游跟踪 · 12 条

命令 / 语法描述示例 (Example)操作
git fetch拉取远程更新(不合并)git fetch
git fetch origin <branch>拉取指定远程分支git fetch origin main
git fetch --prune拉取并清理已删除的远程分支git fetch --prune
git pull拉取并合并当前分支的远程git pull
git pull origin <branch>拉取指定的远程分支git pull origin main
git pull --rebase拉取并以变基方式整合git pull --rebase
git push推送当前分支git push
git push -u origin <branch>推送并建立上游跟踪git push -u origin feature/login
git push origin <branch>推送指定分支git push origin feature
git push --force强制推送(覆盖远程,危险) 高危git push --force
git push --force-with-lease安全强制推送(远程未变时才成功) 注意git push --force-with-lease
git push --delete origin <branch>删除远程分支 高危git push --delete origin feature/login

其他实用命令子模块、二分查找、导出与其他 · 12 条

命令 / 语法描述示例 (Example)操作
git submodule add <url> <dir>添加子模块git submodule add https://github.com/x/y lib/y
git submodule update --init --recursive初始化并拉取全部子模块git submodule update --init --recursive
git bisect start二分查找引入 bug 的提交git bisect start
git bisect good <hash>标记一个已知正常的提交git bisect good v1.0.0
git bisect bad <hash>标记一个已知有问题的提交git bisect bad HEAD
git worktree add <dir> <branch>把另一分支检出到独立目录git worktree add ../hotfix main
git grep "pattern"在整个版本库中搜索git grep "TODO"
git archive --format=zip -o out.zip <ref>导出某版本为压缩包git archive --format=zip -o v1.zip v1.0.0
git rev-parse HEAD查看当前提交哈希git rev-parse HEAD
git clean -xfd连同 .gitignore 忽略的文件一并清除 高危git clean -xfd
git help <cmd>查看某条命令的帮助git help commit
git cherry <upstream> <head>查看哪些提交未被合入上游git cherry main
适用于本地仓库与 GitHub / GitLab / Gitee 等平台 · 示例列等宽代码为可直接运行的命令;「输出」为典型回显
对 reset --hard、--force、clean 等高危操作已标注风险提示,执行前请确认影响范围共 145 条命令,全部内容服务端渲染,搜索与复制在浏览器本地完成

工具介绍

Git命令大全是一份面向开发、运维与 Git 初学者的版本控制命令速查表。它把日常最高频的操作按配置与初始化、远程仓库、工作区与暂存区、提交、分支、合并与变基、历史与差异、标签、暂存草稿、撤销与回滚、同步推送、其他实用命令共 12 大类归纳整理,每条命令都配有中文说明和可直接套用的示例。

不同于零散的备忘录,本表对一些容易混淆或踩坑的点做了明确提示——例如 merge 与 rebase 的取舍、reset 三种模式的区别、--force 与 --force-with-lease 的安全差异,并对 reset --hard、强推、clean 等高危操作给出风险提示,避免误删提交与覆盖他人代码。你可以用顶部搜索框按关键词过滤,或用分类标签快速定位,点击复制按钮即可把命令复制到剪贴板,粘贴进终端直接执行。

Git命令大全Git命令速查Git常用命令git教程版本控制git分支git合并git撤销

界面展示

Git命令大全 界面截图

功能亮点

  • 命令齐全:覆盖配置、分支、合并、变基、暂存、撤销、同步等全部日常场景
  • 可运行示例:带参数的命令均给出完整示例(如 git push -u origin feature/login),改个名字即可执行
  • 概念辨析:明确区分 merge 与 rebase、reset 三种模式、fetch 与 pull 的适用场景
  • 一键复制:点击复制按钮即可把命令复制到剪贴板,免手敲、免拼错
  • 实时搜索:支持按命令、说明或示例中的任意关键词过滤
  • 分类筛选:12 个分类标签,快速缩小到目标场景
  • 风险提示:对 reset --hard、--force、clean -fd 等高危或改写历史的操作给出注意事项
  • 响应式设计:适配桌面与移动端,手机上也能随时查阅
  • 本地处理:全部内容在浏览器本地渲染,不上传、不收集任何数据

使用方法

  1. 浏览命令列表:在表格中按 12 个分类依次浏览全部 Git 命令
  2. 搜索或筛选:输入关键词(如 merge、暂存、标签),或直接点击分类标签
  3. 查看说明:每条命令都有中文用途解释,并标注适用场景与注意点
  4. 参考示例:等宽代码是可直接运行的命令;以「输出」开头的灰字是执行后的典型回显
  5. 复制执行:点击复制按钮,粘贴到终端执行;涉及改写历史或强制推送的命令请先确认影响范围

适合人群

  • 软件开发工程师:日常提交、建分支、发 PR、解决冲突
  • DevOps / SRE:编写 CI/CD、管理多仓库与子模块
  • Git 初学者:正在系统学习版本控制、需要一份可靠速查表的学生
  • 开源贡献者:在 GitHub / GitLab / Gitee 上协作、整理提交历史
  • 技术面试备考者:复习 merge/rebase、reset、冲突解决等高频考点

常见问题解答(FAQ)

GIT PULL 和 GIT FETCH 有什么区别?
git fetch 只把远程更新下载到本地,不改动工作区与当前分支,很安全;git pull = git fetch + git merge,会直接合并进当前分支。日常建议先 fetch 检查差异,再决定 merge 或用 git pull --rebase。
GIT RESET --HARD 会丢失什么?
reset --hard 会把 HEAD、暂存区和工作区全部回退到目标提交,未提交的改动被直接丢弃。已提交未推送的可先 git reflog 找回哈希再 reset;从未提交的很难恢复,务必谨慎。
MERGE 和 REBASE 怎么选?
merge 生成合并提交、保留分支拓扑,适合公共分支;rebase 历史线性整洁但改写提交哈希。经验法则:本地私有分支可用 rebase 整理,已推送的公共分支不要随意 rebase。
怎么修改最近一次提交?
用 git commit --amend:改说明用 -m "新说明";补文件先 git add 再 --no-edit。amend 会改写哈希,若已推送需 --force-with-lease 更新,且只应在自己的分支上做。
已经 PUSH 的提交怎么撤销?
共享分支推荐 git revert 生成反向提交,不改写历史、可安全推送。不要 reset --hard 再强推公共分支;只有个人未拉取的分支才考虑 reset + force-with-lease。
GIT STASH 是干什么用的?
有未提交改动却需切分支时,git stash 把改动临时入栈,让工作区变干净;之后 stash pop 恢复并出栈,或 stash apply 恢复但保留记录。适合临时被打断的场景。
怎么把本地分支关联到远程?
首次推送加 -u:git push -u origin <branch>,Git 记录上游跟踪,之后直接 git push/pull 即可。用 git branch -vv 可查看各分支上游关系。
为什么用 --FORCE-WITH-LEASE 而不是 --FORCE?
--force 无条件覆盖远程,会静默丢掉他人新推的提交;--force-with-lease 只在远程停在你上次拉取位置时才允许强推,发现他人更新会拒绝,更安全。
GIT COMMIT --AMEND 有什么风险?
amend 会产生新哈希。若原提交已推送且被他人拉取,强推后历史分叉,需要他人 rebase 才能跟上。amend 只应作用于未推送的本地提交,改已推送提交优先 revert。
怎么查某行代码是谁改的?
用 git blame <文件>,逐行显示最后修改的提交哈希、作者和时间;聚焦某几行用 git blame -L 10,20 src/app.js,配合 git show 查看完整改动。
合并冲突怎么解决?
Git 用 <<<<<<<、=======、>>>>>>> 标出冲突。保留想要的版本并删标记,git add 标记已解决;merge 用 git commit,rebase 用 git rebase --continue。冲突解决前不要强推。
怎么删除远程分支和标签?
删远程分支:git push --delete origin <branch>;删远程标签:git push origin :refs/tags/<name>。本地分别用 git branch -d 与 git tag -d,远程删除不影响本地。
这个命令速查表应该怎么用?
顶部搜索框按关键词(如 merge、暂存)实时过滤;分类标签按 12 类快速定位。每条命令的示例列给出可直接运行的写法,点复制粘贴到终端执行;带 --hard / --force / clean 的高危操作先确认影响范围。

更新日期:2026-11-03