Git 常用命令速查表
提交、分支、撤销、远程等九类命令,含可直接套用的示例
共 69 条命令
git init配置与初始化在当前目录创建仓库
git init
git clone <url>配置与初始化克隆远程仓库到本地
git clone git@github.com:user/repo.git
git config --global user.name "Ada"配置与初始化设置提交者姓名,一次配置长期生效
git config --global user.name "Ada"
git config --global user.email "ada@example.com"配置与初始化设置提交者邮箱,提交记录里会带上
git config --global user.email "ada@example.com"
git config --global alias.st status配置与初始化自定义命令别名,少敲几个字
git config --global alias.lg "log --oneline --graph"
git remote add origin <url>配置与初始化给本地仓库关联远程地址
git remote add origin git@github.com:user/repo.git
git status提交与暂存查看工作区与暂存区当前状态
git status -sb
git add <file>提交与暂存把指定文件的改动放入暂存区
git add src/app.vue
git add -p提交与暂存交互式挑选代码块暂存,适合拆细提交
git add -p
git commit -m "msg"提交与暂存提交暂存区内容
git commit -m "fix: 修正登录跳转"
git commit --amend提交与暂存改写最近一次提交(信息或内容)
git commit --amend --no-edit
git restore --staged <file>提交与暂存把文件移出暂存区但保留改动
git restore --staged src/app.vue
git rm --cached <file>提交与暂存停止跟踪但保留本地文件(补 .gitignore 后常用)
git rm --cached .env
git mv <old> <new>提交与暂存重命名文件并让 Git 记录这次改名
git mv old.ts new.ts
git branch分支与合并列出本地分支,带 * 的是当前分支
git branch -vv
git switch -c <name>分支与合并新建并切换到新分支
git switch -c feature/login
git switch <name>分支与合并切换到已有分支
git switch main
git merge <branch>分支与合并把目标分支合并进当前分支
git merge feature/login
git merge --no-ff <branch>分支与合并禁用快进,保留合并提交便于回溯
git merge --no-ff feature/login
git merge --squash <branch>分支与合并把分支上的多个提交压成一个
git merge --squash feature/login
git rebase <branch>分支与合并把自己的提交搬到目标分支之后,历史更线性
git rebase main
git rebase -i HEAD~3分支与合并交互式整理最近三次提交:合并、改序、改信息
git rebase -i HEAD~3
git rebase --onto <new> <old> <branch>分支与合并把一段提交整体搬到新基点
git rebase --onto main old-base topic
git cherry-pick <commit>分支与合并把某个提交摘到当前分支
git cherry-pick a1b2c3d
git branch -d <name>分支与合并删除已合并的分支,-D 可强制删除
git branch -d feature/login
git restore <file>撤销与回滚丢弃工作区改动(改动未提交时最常用)
git restore src/app.vue
git reset --soft HEAD~1撤销与回滚撤销最近一次提交,改动留在暂存区
git reset --soft HEAD~1
git reset HEAD~1撤销与回滚撤销提交并把改动退回工作区
git reset HEAD~1
git reset --hard HEAD~1撤销与回滚彻底丢弃最近一次提交与改动(危险,不可恢复)
git reset --hard HEAD~1
git revert <commit>撤销与回滚生成一个反向提交来抵消已有提交,不改写历史
git revert a1b2c3d
git revert -m 1 <merge-commit>撤销与回滚撤销一次合并提交,-m 指定保留哪一侧
git revert -m 1 8f3c2a1
git checkout <commit> -- <file>撤销与回滚取回某个历史版本里的单个文件
git checkout HEAD~2 -- config/nginx.conf
git reflog撤销与回滚查看 HEAD 移动历史,误删分支与提交靠它找回
git reflog
git clean -fd撤销与回滚删除未跟踪的文件与目录(危险,先加 -n 试跑)
git clean -fdn
git stash暂存与清理把当前改动临时收起,工作区回到干净状态
git stash push -m "wip: 登录页"
git stash list暂存与清理查看所有暂存条目
git stash list
git stash pop暂存与清理恢复最近一次暂存并从列表移除
git stash pop
git stash apply stash@{2}暂存与清理恢复指定暂存但保留列表条目
git stash apply stash@{2}git stash drop暂存与清理丢弃最近一次暂存
git stash drop
git fetch --prune远程协作拉取远端更新并清理已被删除的远程分支
git fetch --all --prune
git pull --rebase远程协作以变基方式拉取,避免多余的合并提交
git pull --rebase
git push -u origin <branch>远程协作推送新分支并建立跟踪关系
git push -u origin feature/login
git push --force-with-lease远程协作变基后强推,但远端有新提交时会拒绝
git push --force-with-lease
git push origin --delete <branch>远程协作删除远程分支
git push origin --delete feature/login
git remote -v远程协作查看远程仓库地址
git remote -v
git remote set-url origin <url>远程协作修改远程仓库地址,换仓库或换协议时用
git remote set-url origin git@github.com:user/repo.git
git log --oneline --graph查看历史单行图形化历史,快速看清分支结构
git log --oneline --graph --decorate --all
git log -S "text"查看历史查找引入或删除过某段文本的提交
git log -S "checkToken" --oneline
git show <commit>查看历史查看某次提交的详情与改动
git show a1b2c3d --stat
git diff查看历史工作区与暂存区的差异
git diff --stat
git diff --staged查看历史已暂存内容与上次提交的差异
git diff --staged
git blame <file>查看历史逐行显示最后修改人与提交,定位责任代码
git blame -L 20,40 src/app.vue
git shortlog -sn查看历史按作者统计提交数量
git shortlog -sn --no-merges
git bisect start查看历史二分查找引入 bug 的提交:标记好与坏后逐步逼近
git bisect start # git bisect bad / git bisect good <commit>
git tag -a v1.0.0 -m "release"标签与发布创建带说明的附注标签
git tag -a v1.0.0 -m "first release"
git tag标签与发布列出全部标签
git tag -l "v1.*"
git push origin <tag>标签与发布推送单个标签到远端
git push origin v1.0.0
git worktree add ../hotfix main排错与高级一份仓库检出多个工作目录,可并行开发
git worktree add ../repo-hotfix main
git submodule update --init --recursive排错与高级初始化并拉取子模块
git submodule update --init --recursive
git archive --format=zip HEAD -o src.zip排错与高级导出某个提交的快照,不含 .git
git archive --format=zip HEAD -o src.zip
git gc排错与高级整理并压缩仓库,仓库变大时可跑
git gc --aggressive --prune=now
git fsck排错与高级检查对象完整性,排查仓库损坏
git fsck --full
git range-diff排错与高级对比两次变基前后的差异,确认改动没丢
git range-diff main old-topic topic
git format-patch <range>排错与高级把提交导出为补丁文件,便于邮件或其他仓库应用
git format-patch HEAD~3
git apply <patch>排错与高级应用补丁文件,不产生提交
git apply --check fix.patch
git filter-repo --path <dir>排错与高级改写历史以删除文件或目录,需先装 git-filter-repo
git filter-repo --path secrets/ --invert-paths
这个工具不好用,或者遇到 bug?
去反馈