Git命令大全

145 个常用命令 · 12 类分组 · 描述与示例齐全 · 点击复制

返回 ico5.net 在线工具箱 您还可以使用 Linux命令大全 MySQL命令大全 ADB命令大全 PHP函数大全

Git命令大全

共 12 张表 · 145 行 · 浏览器本地运行

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

命令 / 语法 描述 示例 (Example)
git config --global user.name "Your Name" 设置全局提交用户名 git config --global user.name "Zhang San"
git config --global user.email "you@mail.com" 设置全局提交邮箱 git config --global user.email "zhang@mail.com"
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

远程仓库 - 添加、查看、修改与清理远程

命令 / 语法 描述 示例 (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 git@github.com:user/repo.git
git remote rename origin upstream 重命名远程 git remote rename origin upstream
高危:会丢弃或覆盖数据,执行前务必确认 删除远程 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

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

命令 / 语法 描述 示例 (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 --cached git diff --staged 的别名 git diff --cached

提交 - 创建提交与修改最近提交

命令 / 语法 描述 示例 (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

分支管理 - 创建、切换、重命名与删除分支

命令 / 语法 描述 示例 (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 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 及冲突处理

命令 / 语法 描述 示例 (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 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

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

命令 / 语法 描述 示例 (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

标签管理 - 创建、推送、删除与检出标签

命令 / 语法 描述 示例 (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 v0.9
git push origin <tag> 推送单个标签到远程 git push origin v1.0.0
git push --tags 推送全部本地标签 git push --tags
高危:会丢弃或覆盖数据,执行前务必确认 删除远程标签 git push origin :refs/tags/v0.9
git checkout <tag> 检出标签(进入游离 HEAD) git checkout v1.0.0
git describe --tags 用最近的标签描述当前提交 git describe --tags

暂存草稿 - 临时保存未提交改动

命令 / 语法 描述 示例 (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 clear
git stash show -p 查看暂存的具体内容差异 git stash show -p stash@{0}

撤销与回滚 - 安全撤销、回退与找回提交

命令 / 语法 描述 示例 (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 HEAD~1
高危:会丢弃或覆盖数据,执行前务必确认 丢弃工作区某文件的改动(旧写法) git checkout -- app.js
git clean -n 预览将被删除的未跟踪文件 git clean -n
高危:会丢弃或覆盖数据,执行前务必确认 删除未跟踪的文件与目录(危险) git clean -fd
git reflog 查看 HEAD 变动记录(找回丢失提交) 输出:a1b2c3d4e5f HEAD@{0}: reset: moving to HEAD~1

同步与推送 - fetch / pull / push 及上游跟踪

命令 / 语法 描述 示例 (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-with-lease
高危:会丢弃或覆盖数据,执行前务必确认 删除远程分支 git push --delete origin feature/login

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

命令 / 语法 描述 示例 (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
高危:会丢弃或覆盖数据,执行前务必确认 连同 .gitignore 忽略的文件一并清除 git clean -xfd
git help <cmd> 查看某条命令的帮助 git help commit
git cherry <upstream> <head> 查看哪些提交未被合入上游 git cherry main

命令示例中的 <url>、<分支名> 等尖括号内容需替换为实际值;点击表格中任意单元格可复制该格内容;数据仅供参考,实际请以官方最新标准为准。

工具简介

Git命令大全收录了 145 个日常开发中最常用的 Git 命令,按「配置与初始化、日常提交、分支管理、远程仓库、撤销与回退、暂存与储藏」等 12 个场景分组整理,每个命令都配有中文描述和可直接运行的真实示例。

无论是刚接触版本控制的新手,还是需要临时查一下 rebase 参数的老手,都可以用顶部搜索框按命令名或关键词(如 branch、reset、stash)快速定位,点击任意单元格即可复制命令。

Git 的命令体系非常庞大,本表聚焦高频命令与其最常用形态。更完整的参数说明建议使用 git help <命令> 查看官方文档。

功能特点

📦 145 个高频命令

覆盖 90% 的日常 Git 操作场景,从克隆提交到变基回退。

🗂️ 12 类场景分组

按配置、提交、分支、远程、撤销、储藏等分组,查找有章法。

💬 真实示例

每条命令配可运行的示例,替换尖括号参数即可上手。

📋 点击复制

点选任意单元格复制命令或示例,贴进终端直接用。

🔍 关键词筛选

输入命令名或关键词即时过滤,几秒定位目标命令。

🔒 本地运行

全部内容浏览器本地渲染,无联网查询。

使用方法

1按场景查找

先定位场景分组(如撤销回退),或直接搜索命令关键词。

2阅读描述示例

对照描述理解命令用途,参考示例确认参数写法。

3复制到终端

点击单元格复制命令,替换尖括号占位内容后执行。

4谨慎执行破坏性命令

reset --hard、push --force 等命令会改写历史,执行前请确认备份。

Git命令大全常见问题 (FAQ)

git merge 和 git rebase 有什么区别?

merge 把两条分支的历史合并并产生合并提交,保留真实时间线;rebase 把当前分支的提交挪到目标分支顶端,历史更线性。团队协作中,已推送的公共分支不要随意 rebase。

commit 之后想撤销怎么办?

只是改提交信息或补文件用 git commit --amend;撤销最近一次提交保留改动用 git reset --soft HEAD~1;彻底丢弃用 --hard(会丢代码,慎用)。已推送的提交建议用 git revert 生成反向提交。

git stash 适合什么场景?

当手头改动还没完成却需要切分支或拉代码时,用 git stash 临时保存工作区,之后 git stash pop 恢复,避免提交半成品代码。

如何从远程仓库拉取最新代码?

git pull 等价于 fetch 加 merge,简单直接;更推荐 git fetch 后查看差异再决定合并方式,减少意外冲突。