git
Git 2.30+日常高频 Git 命令快速参考:init、clone、branch、merge、rebase、reset、stash、远程操作、历史查询,并附带常用参数和实操示例。
31 条命令
入门
git init在当前目录创建一个新的 Git 仓库。
git init my-projectgit clone <url>将远程仓库拷贝到本地,包括完整历史记录。
--depth 1 浅克隆(仅最新提交);-b <branch> 克隆指定分支
git clone -b main --depth 1 https://github.com/user/repo.gitgit config设置用户名、邮箱等配置;--global 作用于所有仓库。
git config --global user.name "Your Name" && git config --global user.email "[email protected]"日常操作
git status查看工作区状态:已修改、已暂存、未跟踪的文件。
-s 短格式;-b 显示分支信息
git status -sbgit add <file>将文件变更添加到暂存区,准备下一次提交。
-A 暂存所有变更;-p 交互式挑选片段;-u 仅暂存被跟踪的文件
git add -p src/index.tsgit commit将暂存的变更记录为一次提交。
-m 提交信息;-a 暂存被跟踪的文件并提交;--amend 改写上一次提交
git commit -am "fix: 处理空输入"git diff查看工作区、暂存区、各提交之间的行级差异。
--staged 与上次提交的差异;<branch> 与某分支的差异;--stat 只显示摘要
git diff --staged --statgit restore <file>丢弃工作区未提交的修改(配合 --staged 可取消暂存)。
git restore --staged src/index.ts分支
git branch列出、创建或删除分支。
-d 删除;-D 强制删除;-m 重命名;-a 同时列出远程分支
git branch -m old-name new-namegit switch <branch>切换到其他分支;-c 先创建分支再切换(替代旧的 checkout)。
git switch -c feature/logingit merge <branch>将其他分支合并到当前分支。
--no-ff 总是生成合并提交;--abort 取消正在进行的合并
git merge --no-ff feature/logingit rebase <branch>将当前分支的提交“重放到”另一个分支顶端,得到线性历史。
-i 交互式(合并/改写/重排);--abort 取消;--continue 解决后继续
git rebase -i HEAD~3远程
git remote -v列出已配置的远程仓库及其地址。
git remote add origin https://github.com/user/repo.gitgit fetch从远程下载对象与引用,但不合并。
--prune 删除过时的远程跟踪分支;--all 获取所有远程
git fetch --prune origingit pull从远程获取并合并(或 rebase)到当前分支。
--rebase 改为 rebase;--ff-only 仅快进合并
git pull --rebase origin maingit push将本地提交推送到远程仓库。
-u 设置上游跟踪;--force-with-lease 更安全的强推;--tags 推送标签
git push -u origin feature/login撤销与修复
git reset将 HEAD 移动到其他提交,可选是否同时修改暂存区与工作区。
--soft 保留变更在暂存区;--mixed(默认)保留变更在工作区;--hard 丢弃所有变更
git reset --hard HEAD~1git revert <commit>生成一次新提交来撤销之前的某次提交,对共享历史安全。
git revert HEADgit commit --amend改写最近一次提交:补充漏掉的文件或修改提交信息。
--no-edit 保留原提交信息
git commit --amend --no-editgit clean删除工作区未跟踪的文件。
-n 预览;-f 强制;-d 包含目录;-x 包含被忽略的文件
git clean -ndx历史与查看
git log查看提交历史。
--oneline 每条一行;--graph 分支图;-p 显示差异;-n 限制条数
git log --oneline --graph -15git show <commit>显示某次提交的说明与差异;也可用于标签或文件(git show HEAD:file)。
git show HEAD~2 --statgit blame <file>逐行显示文件的最后修改者与对应提交。
-L n,m 仅显示指定行范围
git blame -L 10,20 src/index.tsgit reflog查看 HEAD 的移动历史——可在 reset/rebase 出错后找回“丢失”的提交。
git reflog -20暂存
git stash临时搁置未提交的修改,让工作区恢复干净。
-u 包含未跟踪文件;push -m 说明;list 列出所有 stash
git stash push -u -m "wip: 登录表单"git stash pop恢复最近的 stash 并从 stash 列表中移除。
apply 恢复但保留 stash 条目
git stash apply stash@{1}标签与发布
git tag列出、创建或删除用于标记发布点的标签。
-a 注释标签;-m 说明;-d 删除
git tag -a v1.2.0 -m "Release 1.2.0"git describe --tags显示当前提交可达的最近标签及距离。
git describe --tags --always高级
git cherry-pick <commit>将指定提交的变更应用到当前分支。
-n 应用但不提交;-x 在提交信息中追加源提交哈希
git cherry-pick -x a1b2c3dgit bisect通过二分查找定位引入 bug 的提交。
start / bad / good / run <cmd> / reset
git bisect start && git bisect bad && git bisect good v1.0.0git worktree add <path> <branch>在同一仓库中以独立目录签出其他分支。
git worktree add ../hotfix hotfix/urgent-bug相关命令速查
商标与使用声明
本批命令行工具速查手册为开源社区参考资料。文中涉及的各工具的名称、标识、商标(如 Git™、Docker™、Kubernetes®、kubectl、PostgreSQL®、MySQL®、Redis™、MongoDB®、Linux™、PowerShell™、Vim™ 等)均归对应权利人所有,此处仅为识别与参考之目的使用。
本速查手册的全部内容均为独立编写的简化自包含参考,**与任何官方文档不存在隶属、被认可或引用关系**。命令列表、参数说明、示例均为作者原创简化表达;如需权威信息,请参阅各工具的官方文档。
命令语法与参数可能在不同工具版本中有所差异。所示版本标签对应稳定发布版本;其他版本行为可能有所不同。本速查手册**不代表**商标权利人的任何偏好或推荐。
如商标或版权方认为本站部分内容存在权益侵害,请发送邮件至[email protected],我们在收到有效权属证明后,会在合理期限内修改或移除相关内容。
本网站不对因使用本站信息而产生的任何直接或间接损失承担法律责任。
关于 Git
Git 是由 Linus Torvalds 在 2005 年 4 月因 BitKeeper 许可证争议而创建的免费开源分布式版本控制系统,最初用于管理 Linux 内核源码树。每个工作目录都是一份完整仓库,提交、分支、合并都在本地完成,直到 `git push` 才会上传到服务器——这就是 Git 既快又能支撑上千人离线协作的原因。当前稳定版是 Git 2.40+。Git 用内容寻址文件系统(SHA-1,未来切到 SHA-256)存储对象:`commit`、`tree`、`blob`、`tag`;并支持暂存区(index)、廉价分支、rebase、二分查找(bisect)、子模块、worktree、GPG/SSH 签名提交等特性。它已成为源代码管理的业界标准,被开源项目和大型企业同时广泛使用。任何需要历史、分支或协作的场景都该用它;发 PR 前用 `git rebase -i` 整理提交记录,找回"丢失"的工作靠 `git reflog`。Git 不会上传你没提交过的内容,但会忠实地保留你提交过的——推送到公开仓库前,用 `git filter-repo` 清理敏感数据。
速查页版本 1.0.0