Git 常用命令速查

配置

命令说明
git config --global user.name "name"设置全局用户名
git config --global user.email "email"设置全局邮箱
git config --global --list列出所有全局配置
git config --global core.editor vim设置默认编辑器
git config --global core.autocrlf input设置换行符处理(Mac/Linux 用 input)
git config --global init.defaultBranch main设置默认分支名称

初始化与克隆

命令说明
git init在当前目录初始化新的 Git 仓库
git clone <url>克隆远程仓库到本地
git clone <url> <dir>克隆到指定目录
git clone --depth 1 <url>浅克隆,只获取最近一次提交(加快大仓库克隆)

基本操作

命令说明
git status查看工作区状态
git add <file>添加指定文件到暂存区
git add .添加所有变更到暂存区
git add -p交互式暂存,逐块选择要提交的内容
git commit -m "msg"提交暂存区的内容
git commit -am "msg"跳过 add,直接提交已跟踪文件的修改
git commit --amend修改上一次提交(可追加修改或修改 message)
git commit --amend --no-edit追加文件到上一次提交,不修改 message
git reset HEAD <file>从暂存区取消指定文件
git checkout -- <file>丢弃工作区中指定文件的修改(旧版用法,推荐 git restore)
git rm <file>删除文件并提交到暂存区
git mv <old> <new>重命名文件

分支

命令说明
git branch列出所有本地分支
git branch -r列出所有远程分支
git branch -a列出所有本地和远程分支
git branch <name>创建新分支
git branch -d <name>删除已合并的分支
git branch -D <name>强制删除未合并的分支
git checkout <branch>切换到指定分支
git checkout -b <branch>创建并切换到新分支
git switch <branch>切换到指定分支(Git 2.23+ 推荐用法)
git switch -c <branch>创建并切换到新分支(Git 2.23+)
git branch -m <old> <new>重命名分支

远程仓库

命令说明
git remote -v查看远程仓库地址
git remote add origin <url>添加远程仓库
git remote remove <name>删除远程仓库
git remote set-url origin <url>修改远程仓库地址
git fetch <remote>从远程仓库获取更新(不合并)
git fetch --all从所有远程仓库获取更新
git pull <remote> <branch>获取并合并远程分支到当前分支
git pull --rebase获取并以 rebase 方式合并
git push <remote> <branch>推送本地分支到远程
git push -u origin <branch>推送并设置上游分支
git push --force-with-lease安全强制推送(会检查远程是否被他人修改)
git push --delete origin <branch>删除远程分支

撤销与回退

命令说明
git reset --soft <commit>回退到指定提交,保留工作区和暂存区修改
git reset --mixed <commit>回退到指定提交,保留工作区修改,清空暂存区(默认)
git reset --hard <commit>回退到指定提交,丢弃所有修改(不可恢复)
git revert <commit>创建一个新的提交来撤销指定提交(安全,保留历史)
git checkout <commit> -- <file>恢复文件到指定提交时的版本
git restore --staged <file>从暂存区移除文件(Git 2.23+)
git restore <file>丢弃工作区修改(Git 2.23+)
git stash暂存当前工作区修改
git stash pop恢复最近一次暂存的修改并删除该暂存
git stash list查看所有暂存
git stash drop stash@{0}删除指定暂存
git stash clear清空所有暂存

日志与对比

命令说明
git log查看提交历史
git log --oneline简洁格式的提交历史
git log --oneline --graph图形化分支合并历史
git log --since="2026-01-01"查看指定日期后的提交
git log --author="name"查看指定作者的提交
git log -p查看每次提交的差异
git log --stat查看每次提交的文件变更统计
git log -n 5查看最近 5 条提交
git diff查看工作区与暂存区的差异
git diff --staged查看暂存区与上一次提交的差异
git diff <branch1>..<branch2>查看两个分支之间的差异
git blame <file>查看文件每一行的最后修改提交
git shortlog -sn查看每位作者的提交数量统计

标签

命令说明
git tag列出所有标签
git tag <name>创建轻量标签
git tag -a <name> -m "msg"创建带注释的标签
git tag -d <name>删除本地标签
git push origin <tag>推送指定标签到远程
git push origin --tags推送所有标签到远程
git checkout <tag>切换到指定标签(进入分离 HEAD 状态)

合并

命令说明
git merge <branch>将指定分支合并到当前分支
git merge --no-ff <branch>禁用 fast-forward,始终创建合并提交
git merge --squash <branch>将指定分支的所有提交压缩为一次提交
git merge --abort取消当前正在进行的合并
git mergetool使用配置的合并工具解决冲突

变基

命令说明
git rebase <branch>将当前分支变基到指定分支
git rebase -i <commit>交互式变基,可压缩、修改、删除提交
git rebase --continue解决冲突后继续变基
git rebase --abort取消当前正在进行的变基
git rebase --skip跳过当前冲突的提交
git cherry-pick <commit>将指定提交应用到当前分支
git cherry-pick <c1>..<c2>应用一个范围内的多个提交

清理与维护

命令说明
git clean -n预览哪些未跟踪的文件会被删除
git clean -f删除未跟踪的文件
git clean -fd删除未跟踪的文件和目录
git gc运行垃圾回收,优化仓库存储
git fsck检查仓库的完整性和一致性
git reflog查看所有引用变更历史(可用于恢复丢失的提交)