Git 命令速查
Git 常用命令速查手册,含分支、变基、回退与排障场景
⚙️ 初始化与配置
git init在当前目录初始化仓库
git initgit clone <仓库地址>克隆远程仓库,加 --depth 1 只拉最新一层
git clone --depth 1 https://github.com/user/repo.gitgit config --global user.name "<名字>"设置全局提交者姓名
git config --global user.name "Zhang San"git config --global user.email "<邮箱>"设置全局提交邮箱,需与代码托管平台一致
git config --global user.email "me@example.com"git config --global init.defaultBranch main把新仓库默认分支设为 main
git config --global init.defaultBranch maingit config --list --show-origin查看所有配置及其来源文件,排查配置冲突
git config --list --show-origingit remote set-url origin <新地址>修改远程仓库地址(换域名或改 SSH/HTTPS 时)
git remote set-url origin git@github.com:user/repo.git📝 暂存与提交
git status -s简洁格式查看工作区状态
git status -sgit add -p交互式逐块暂存,把同一文件的改动拆成多个提交
git add -pgit commit -m "<信息>"提交暂存区内容
git commit -m "feat: 支持导出 CSV"git commit --amend把改动并入上一次提交,同时可改提交信息;未推送才可用
git commit --amend -m "fix: 修正边界判断"git commit --amend --no-edit并入上一次提交但不改信息
git commit --amend --no-editgit restore <文件>撤销工作区中尚未暂存的修改(Git 2.23+)
git restore src/main.jsgit restore --staged <文件>把文件从暂存区撤回到工作区
git restore --staged src/main.jsgit diff查看尚未暂存的改动,--cached 查看已暂存的
git diff --cached🌿 分支管理
git branch -a列出本地与远程所有分支
git branch -agit switch -c <分支名>创建并切换到新分支(推荐写法)
git switch -c feature/logingit switch <分支名>切换到已有分支
git switch maingit switch -在两个分支间来回切换
git switch -git branch -m <新名字>重命名当前分支
git branch -m feature/authgit branch -d <分支名>删除已合并的分支,未合并会拒绝
git branch -d feature/logingit branch -D <分支名>强制删除未合并分支,改动会丢失
git branch -D feature/logingit push origin --delete <分支名>删除远程分支
git push origin --delete feature/logingit branch --merged main列出已合并进 main 的分支,便于批量清理
git branch --merged main☁️ 远程同步
git pull --rebase拉取远程并以变基方式合并本地提交,避免多余合并节点
git pull --rebasegit fetch --all --prune拉取所有远程引用并清理已被删除的远端分支
git fetch --all --prunegit push -u origin <分支名>首次推送并绑定上游分支,之后可直接 git push
git push -u origin feature/logingit remote -v查看远程仓库地址
git remote -vgit push --tags推送本地标签到远程(普通 push 不带标签)
git push --tagsgit push --force-with-lease比 -f 安全的强推:远端有新提交时拒绝推送
git push --force-with-lease📜 查看历史
git log --oneline --graph --all -20图形化查看最近 20 条提交与各分支关系
git log --oneline --graph --all -20git log -p <文件>查看某个文件的完整修改历史
git log -p src/main.jsgit log --author="<名字>" --since="1 week ago"按作者与时间筛选提交
git log --author="Zhang" --since="1 week ago"git log -S"<关键字>" --oneline搜索引入或删除该关键字的提交
git log -S"apiKey" --onelinegit blame -L 10,20 <文件>查看指定行区间最后一改是谁提交的
git blame -L 10,20 src/main.jsgit show <提交号>查看某次提交的完整改动内容
git show a1b2c3dgit reflog查看本地所有指针移动记录,误删分支后靠它找回
git reflog↩️ 撤销与回退
git revert <提交号>生成一次反向提交来抵消改动,不改历史,适合已推送的分支
git revert a1b2c3dgit revert --no-commit <提交号>把撤销改动放进工作区而不直接提交,可合并成一次
git revert --no-commit HEAD~2git reset --soft HEAD~1回退一次提交,改动保留在暂存区
git reset --soft HEAD~1git reset --mixed HEAD~1回退一次提交,改动退回工作区(默认行为)
git reset HEAD~1git reset --hard HEAD~1彻底丢弃最后一次提交及其改动,不可恢复需谨慎
git reset --hard HEAD~1git checkout <提交号> -- <文件>把单个文件恢复到某个历史版本
git checkout a1b2c3d -- src/main.jsgit clean -fd删除未跟踪的文件与目录,加 -n 可先预览
git clean -fdn🔀 合并与变基
git merge <分支名>把目标分支合并进当前分支,保留完整历史
git merge feature/logingit merge --no-ff <分支名>禁用快进强制生成合并提交,保留分支拓扑
git merge --no-ff feature/logingit rebase <目标分支>把当前分支的提交移到目标分支末端,历史更线性
git rebase maingit rebase -i HEAD~3交互式整理最近 3 次提交:合并、改序、改信息
git rebase -i HEAD~3git cherry-pick <提交号>把某次提交单独应用到当前分支
git cherry-pick a1b2c3dgit cherry-pick -n <提交号>应用改动但不生成提交,便于自己重新组织
git cherry-pick -n a1b2c3dgit merge --abort放弃本次合并并恢复到合并前状态
git merge --abortgit rebase --abort放弃本次变基,冲突处理不来时用
git rebase --abortgit checkout --ours <文件>冲突时选用当前分支版本,--theirs 选用对方版本
git checkout --theirs package-lock.json📥 Stash 暂存
git stash push -m "<说明>"把当前改动压入暂存栈并还原工作区
git stash push -m "临时切分支"git stash -u连同未跟踪的新文件一起暂存
git stash -ugit stash list查看所有暂存记录
git stash listgit stash pop恢复最近一条暂存并从栈中删除
git stash popgit stash apply stash@{1}恢复指定暂存但不删除,可重复应用到多个分支
git stash apply stash@{1}git stash show -p stash@{0}查看某条暂存的具体改动内容
git stash show -p stash@{0}git stash branch <分支名> stash@{0}基于某条暂存创建新分支,改动已应用
git stash branch fixbug stash@{0}git stash clear清空全部暂存记录,不可恢复
git stash clear🏷️ 标签与版本
git tag -a v1.2.0 -m "<说明>"创建带注释的标签,适合发版
git tag -a v1.2.0 -m "发布 1.2.0"git tag列出所有标签,加 -l "v1.*" 可模糊筛选
git tag -l "v1.*"git show v1.2.0查看标签指向的提交与说明
git show v1.2.0git describe --tags --abbrev=0获取当前提交最近的标签,常用于生成版本号
git describe --tags --abbrev=0git push origin v1.2.0推送单个标签到远程
git push origin v1.2.0git tag -d v1.2.0 && git push origin :refs/tags/v1.2.0删除本地标签并同步删除远程标签
git tag -d v1.2.0 && git push origin :refs/tags/v1.2.0🧩 子模块
git submodule add <仓库地址> <路径>添加子模块并在指定路径落地
git submodule add https://github.com/u/lib.git vendor/libgit submodule update --init --recursive首次克隆后拉取全部子模块内容
git submodule update --init --recursivegit clone --recurse-submodules <仓库地址>克隆主仓库时同时拉取子模块
git clone --recurse-submodules https://github.com/u/repo.gitgit submodule foreach git pull origin main批量把所有子模块更新到远程最新
git submodule foreach git pull origin maingit submodule deinit -f <路径>注销子模块并清空工作区内容
git submodule deinit -f vendor/lib🔧 排查与维护
git bisect start启动二分查找定位引入 Bug 的提交
git bisect startgit bisect bad && git bisect good <提交号>标记当前为坏版本、指定版本为好版本
git bisect bad && git bisect good v1.1.0git bisect reset结束二分查找并回到原分支
git bisect resetgit fsck --lost-found找回丢失的对象,配合 reflog 恢复误删提交
git fsck --lost-foundgit gc --prune=now清理松散对象并压缩历史,减小仓库体积
git gc --prune=nowgit count-objects -vH查看仓库对象数量与占用空间
git count-objects -vHgit rm --cached <文件> && echo <文件> >> .gitignore停止跟踪已入库的文件但保留本地副本
git rm --cached config.local.jsonGit 命令速查怎么用
Git 常用命令速查:分支、rebase、stash、cherry-pick、回滚等场景一搜就有。
- 按场景搜索命令
- 点击复制
- 替换其中的分支名或提交号
小贴士涉及改写历史的命令,先在本地分支验证再推到远端。
Git 命令速查常见问题
Git 命令速查是免费的吗?
完全免费,无需注册登录,也不限使用次数。997 工具箱所有工具都不收费。
使用Git 命令速查会把我的数据上传到服务器吗?
不会。Git 命令速查在浏览器本地完成计算,输入的文本和文件都不会离开你的设备,页面关闭后数据即消失。
Git 命令速查在手机上能用吗?
可以。页面做了移动端适配,手机和平板的浏览器打开同样能正常使用,也不需要安装任何 App。