EasyDebug.NET

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 push --tags远程协作

推送全部本地标签(默认不会随提交推送)

git push origin --tags
git log --oneline --graph查看历史

单行图形化历史,快速看清分支结构

git log --oneline --graph --decorate --all
git log -S "text"查看历史

查找引入或删除过某段文本的提交

git log -S "checkToken" --oneline
git log --author=ada --since=2.weeks查看历史

按作者与时间范围筛选提交

git log --author=ada --since=2.weeks --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 describe --tags标签与发布

用最近的标签描述当前版本,适合做构建号

git describe --tags --always
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?

去反馈
站长的博客
提个建议