Git 常用命令速查手册:从日常提交到分支协作
1. 前言Git 是日常开发中使用频率最高的工具之一但命令多、参数杂很多人只记得add、commit、push三板斧。本文把实际工作中最常用的 Git 命令按场景整理成一份速查手册覆盖仓库初始化、日常提交、分支管理、远程协作、撤销回退、查看历史等高频操作方便随时查阅。2. 配置与初始化2.1 全局配置首次使用 Git 需要配置用户名和邮箱提交记录会带上这些信息# 配置全局用户名和邮箱gitconfig--globaluser.nameYour Namegitconfig--globaluser.emailyouexample.com# 查看当前配置gitconfig--list# 设置默认分支名为 maingitconfig--globalinit.defaultBranch main2.2 创建与克隆仓库# 在当前目录初始化一个 Git 仓库gitinit# 克隆远程仓库到本地gitclone https://github.com/user/repo.git# 克隆到指定目录gitclone https://github.com/user/repo.git my-project# 只克隆最近一次提交适合大仓库gitclone--depth1https://github.com/user/repo.git3. 日常提交三板斧这是使用频率最高的流程修改文件 → 暂存 → 提交。# 查看工作区状态gitstatus# 查看具体改动内容gitdiff# 暂存单个文件gitaddfile.txt# 暂存所有改动gitadd.# 提交并填写说明gitcommit-mfeat: 新增用户登录接口# 跳过暂存区直接提交已跟踪文件的改动gitcommit-amfix: 修复空指针异常提交信息建议遵循约定式提交Conventional Commits规范常见前缀前缀含义feat新增功能fix修复缺陷docs文档变更refactor重构不改变功能test测试相关chore构建、依赖等杂项4. 分支管理分支是 Git 最核心的能力多人协作几乎都围绕分支展开。# 查看本地分支gitbranch# 查看所有分支含远程gitbranch-a# 创建并切换到新分支gitswitch-cfeature/login# 切换分支旧写法gitcheckout feature/login# 删除已合并的本地分支gitbranch-dfeature/login# 强制删除未合并的分支gitbranch-Dfeature/login# 重命名当前分支gitbranch-mnew-name提示Git 2.23 之后推荐使用git switch切换分支、git restore恢复文件语义比git checkout更清晰。5. 远程协作# 查看远程仓库地址gitremote-v# 添加远程仓库gitremoteaddorigin https://github.com/user/repo.git# 拉取远程更新并合并gitpull# 拉取时使用变基保持提交历史线性gitpull--rebase# 推送本地分支到远程gitpush-uorigin feature/login# 推送所有标签gitpush--tags# 删除远程分支gitpush origin--deletefeature/login6. 撤销与回退这是最容易出问题的部分务必区分清楚各命令的作用范围。# 撤销工作区某个文件的修改未暂存gitrestore file.txt# 取消暂存保留工作区改动gitrestore--stagedfile.txt# 修改最近一次提交的说明gitcommit--amend-m新的提交说明# 回退到某个提交保留改动到工作区gitreset--softHEAD~1# 回退到某个提交改动进入暂存区gitreset--mixedHEAD~1# 回退到某个提交丢弃所有改动慎用gitreset--hardHEAD~1# 生成一个反向提交来撤销某次提交已推送时更安全gitrevertcommit-hash注意git reset --hard会丢弃未提交的改动执行前请确认。已经推送到远程的提交优先使用git revert而不是reset。7. 查看历史与排查# 查看提交历史gitlog# 单行简洁显示gitlog--oneline--graph--all# 查看某个文件的修改历史gitlog-pfile.txt# 查看某次提交的具体内容gitshowcommit-hash# 查看某行代码是谁改的gitblame file.txt# 搜索提交信息中包含关键字的提交gitlog--grep登录8. 暂存与临时保存切换分支时手头改动没写完可以用stash临时保存# 保存当前改动gitstash# 保存并添加说明gitstash push-m登录功能开发中# 查看暂存列表gitstash list# 恢复最近一次暂存并删除记录gitstash pop# 恢复指定暂存保留记录gitstash apply stash{0}# 删除某条暂存记录gitstash drop stash{0}9. 测试岗位高频命令测试同学使用 Git 的场景与开发略有不同更多是拉取最新代码、切换分支验证、查看改动范围、临时保存现场以及定位「这个 bug 是哪次提交引入的」。下面按测试日常场景逐一整理。9.1 拉取与切换验证最新代码# 拉取最新代码测试前先同步避免测到旧版本gitpull--rebase# 查看当前所在分支确认测的是哪个版本gitbranch# 切换到待测分支gitswitch feature/login# 查看所有分支含远程确认分支是否已推送gitbranch-a# 只拉取远程更新不自动合并先看清再决定gitfetch origin9.2 查看改动范围确认这次改了什么测试最关心「本次提交改动了哪些文件」可据此圈定回归范围# 查看最近几次提交的概览gitlog--oneline-10# 查看某次提交改了哪些文件gitshow--statcommit-hash# 查看两个版本之间的差异文件列表gitdiff--name-only v1.0.0 v1.1.0# 查看两个分支之间的差异文件gitdiff--name-only main feature/login# 查看工作区未提交的改动gitstatusgitdiff9.3 定位问题这个 bug 是哪次提交引入的# 查看某个文件的逐行修改记录与责任人gitblame src/service/UserService.java# 查看某个文件的历史提交gitlog-p-- src/service/UserService.java# 按关键字搜索提交如需求号、bug 号gitlog--grepBUG-1024# 二分查找引入问题的提交配合可执行的验证脚本gitbisect startgitbisect bad# 当前版本有问题gitbisect good v1.0.0# 这个版本是好的# 之后按提示反复标记 good/bad定位到具体提交gitbisect reset9.4 临时保存与现场保护测试环境经常需要临时切分支复现问题手头改动可以先存起来# 保存当前改动gitstash push-m复现 BUG-1024 的临时改动# 查看暂存列表gitstash list# 恢复并删除记录gitstash pop9.5 打标签标记提测版本提测时给版本打 tag方便后续回溯和对比# 创建带说明的标签gittag-av1.2.0-m提测版本 v1.2.0# 推送标签到远程gitpush origin v1.2.0# 查看所有标签gittag-l9.6 测试岗位常用命令速查场景命令测试前同步最新代码git pull --rebase确认当前分支git branch切换待测分支git switch branch看最近提交git log --oneline -10看某次提交改了哪些文件git show --stat hash看两版本差异文件git diff --name-only v1.0 v1.1定位某行代码责任人git blame file按 Bug 号搜提交git log --grepBUG-1024二分定位问题提交git bisect start标记提测版本git tag -a v1.2.0 -m 提测版本提示测试同学一般不需要reset --hard、push -f这类破坏性操作如果确实要回退优先用git revert生成反向提交避免影响他人。10. 常见问题速查场景命令提交信息写错了git commit --amend想撤销已推送的提交git revert hash误删分支想找回git reflog找到 hash 后git branch name hash冲突后放弃合并git merge --abort冲突后放弃变基git rebase --abort查看某文件某次改动git log -p -- file.txt11. 小结Git 命令看似繁多实际按场景归类后并不难记日常提交用add/commit/push分支协作用switch/merge/rebase出问题先看status和log回退前想清楚用reset还是revert。建议把本文当作速查表收藏遇到具体场景时按需检索即可。测试岗位可重点关注第 9 节围绕「同步代码、圈定改动范围、定位问题提交、标记提测版本」四件事展开即可覆盖大部分日常需求。