Git 命令速查
日常高频 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速查页版本 1.0.0
适用于 Git 2.30+