145 个常用命令 · 12 类分组 · 描述与示例齐全 · 点击复制
返回 ico5.net 在线工具箱 您还可以使用 Linux命令大全 MySQL命令大全 ADB命令大全 PHP函数大全| 命令 / 语法 | 描述 | 示例 (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 |
| 命令 / 语法 | 描述 | 示例 (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 |
| 命令 / 语法 | 描述 | 示例 (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 <命令> 查看官方文档。
覆盖 90% 的日常 Git 操作场景,从克隆提交到变基回退。
按配置、提交、分支、远程、撤销、储藏等分组,查找有章法。
每条命令配可运行的示例,替换尖括号参数即可上手。
点选任意单元格复制命令或示例,贴进终端直接用。
输入命令名或关键词即时过滤,几秒定位目标命令。
全部内容浏览器本地渲染,无联网查询。
先定位场景分组(如撤销回退),或直接搜索命令关键词。
对照描述理解命令用途,参考示例确认参数写法。
点击单元格复制命令,替换尖括号占位内容后执行。
reset --hard、push --force 等命令会改写历史,执行前请确认备份。
merge 把两条分支的历史合并并产生合并提交,保留真实时间线;rebase 把当前分支的提交挪到目标分支顶端,历史更线性。团队协作中,已推送的公共分支不要随意 rebase。
只是改提交信息或补文件用 git commit --amend;撤销最近一次提交保留改动用 git reset --soft HEAD~1;彻底丢弃用 --hard(会丢代码,慎用)。已推送的提交建议用 git revert 生成反向提交。
当手头改动还没完成却需要切分支或拉代码时,用 git stash 临时保存工作区,之后 git stash pop 恢复,避免提交半成品代码。
git pull 等价于 fetch 加 merge,简单直接;更推荐 git fetch 后查看差异再决定合并方式,减少意外冲突。
如果本站工具对你有帮助,欢迎请作者喝杯咖啡