
本系列完整合集Git 与 Linux 学习笔记合集命令速查、实战与面试考点完整合集原分篇继续公开保留可按需查阅。这是《Git 与 Linux 学习笔记》系列的第 01 篇。缘起很简单我每次要用到不那么高频的 Git 命令stash、revert、tag……都得现搜一遍搜完就忘。这次干脆把散落的资料整理成自己的速查手册按「我要干什么」来组织每条命令都配一段可以直接复制运行的演示。这一篇的核心一句话Git 的所有日常操作都是在「工作区、暂存区、本地仓库、远程仓库」这四个区之间搬东西——记住这句话32 条命令就都不是孤立的。〇、先建立地图Git 的四个区工作区 暂存区 本地仓库 远程仓库 (写代码的地方) → (git add 之后) → (git commit 之后) → (git push 之后) │ │ │ │ git add │ git commit │ git push ←────────────────┴ git restore / reset / pull ─┘后面每条命令都可以对照这张图想一遍「它把东西从哪儿搬到哪儿」。一、基础配置1. 配置用户名和邮箱gitconfig--globaluser.nameYour Namegitconfig--globaluser.emailyouremail.com演示$gitconfig--globaluser.name张三$gitconfig--globaluser.emailzhangsanexample.com2. 查看配置gitconfig--list演示$gitconfig--listuser.name张三user.emailzhangsanexample.com二、仓库操作3. 初始化本地仓库gitinit演示$mkdirmy-projectcdmy-project $gitinit Initialized empty Git repositoryin/my-project/.git/4. 克隆远程仓库gitclone仓库地址演示$gitclone https://github.com/user/repo.git Cloning intorepo... remote: Enumerating objects:150, done.三、日常提交流程5. 查看文件状态gitstatus演示$gitstatus On branch main Changes not stagedforcommit: modified: README.md Untracked files: newfile.txt6. 添加文件到暂存区gitadd文件名# 添加指定文件gitadd.# 添加所有文件演示$gitaddREADME.md newfile.txt $gitstatus Changes to be committed: modified: README.md new file: newfile.txt7. 提交更改gitcommit-m提交信息演示$gitcommit-m修复登录页面bug更新README[main a1b2c3d]修复登录页面bug更新README2files changed,25insertions(),3deletions(-)8. 一步提交仅限已跟踪文件gitcommit-am提交信息演示$gitcommit-am更新配置文件[main e4f5g6h]更新配置文件1filechanged,10insertions(),2deletions(-)注意-am不会把新建的未跟踪文件加进来新文件还是要先git add。四、分支管理9. 查看分支gitbranch# 本地分支gitbranch-a# 所有分支含远程演示$gitbranch * main develop feature-login10. 创建分支gitbranch分支名演示$gitbranch feature-payment $gitbranch develop feature-login feature-payment * main11. 切换分支gitswitch分支名# Git 2.23 推荐gitcheckout分支名# 旧写法演示$gitswitch feature-payment Switched to branchfeature-payment12. 创建并切换分支gitswitch-c分支名# Git 2.23 推荐gitcheckout-b分支名# 旧写法演示$gitswitch-cfeature-search Switched to a new branchfeature-search13. 合并分支gitmerge要合并的分支名演示当前在main合并develop$gitswitch main $gitmerge develop Updating a1b2c3d..e4f5g6h Fast-forward src/app.js|151filechanged,15insertions()14. 删除分支gitbranch-d分支名# 安全删除已合并gitbranch-D分支名# 强制删除演示$gitbranch-dfeature-login Deleted branch feature-login(was e4f5g6h).五、远程操作15. 查看远程仓库gitremote-v演示$gitremote-vorigin https://github.com/user/repo.git(fetch)origin https://github.com/user/repo.git(push)16. 添加远程仓库gitremoteadd别名仓库地址演示$gitremoteaddupstream https://github.com/original/repo.git17. 推送代码gitpush远程名分支名gitpush-uorigin main# 首次推送并设置上游演示$gitpush origin feature-payment Enumerating objects:5, done. To https://github.com/user/repo.git *[new branch]feature-payment -feature-payment18. 拉取代码gitpull远程名分支名gitpull# 拉取当前分支更新演示$gitpull origin main From https://github.com/user/repo * branch main -FETCH_HEAD Updating a1b2c3d..z9y8x7w19. 获取远程更新不自动合并gitfetch演示$gitfetch origin remote: Enumerating objects:10, done. From https://github.com/user/repo a1b2c3d..z9y8x7w main -origin/mainpullfetchmerge。想先看一眼远程发生了什么再决定怎么合并就用fetch。六、查看历史20. 查看提交日志命令说明git log详细日志git log --oneline简洁版一行一条git log --graph --oneline --all图形化分支历史演示$gitlog--onelinea1b2c3d(HEAD -main)修复登录页面bug更新README e4f5g6h 添加支付功能模块 z9y8x7w 初始化项目21. 查看某次提交详情gitshowcommit-hash演示$gitshow a1b2c3d commit a1b2c3d... Author: 张三zhangsanexample.comDate: Mon Jun102026修复登录页面bug更新READMEdiff--gita/README.md b/README.md...22. 查看文件变更差异命令比较范围git diff工作区 ↔ 暂存区git diff --staged暂存区 ↔ 最新提交演示$gitdiffdiff--gita/README.md b/README.md -旧内容行 新内容行七、撤销与回退重点面试常问这一节是整个手册里最容易出事的地方每条都先想清楚「它作用在哪个区」再敲回车。23. 撤销工作区修改gitrestore文件名# Git 2.23 推荐gitcheckout --文件名# 旧写法演示$gitrestore README.md24. 取消暂存gitrestore--staged文件名# Git 2.23 推荐gitreset HEAD文件名# 旧写法演示$gitrestore--stagednewfile.txt25. 回退提交保留修改gitreset--softHEAD~1演示$gitreset--softHEAD~1 $gitstatus Changes to be committed: modified: README.md26. 回退提交丢弃修改⚠️危险操作修改将永久丢失动手前先git log记下当前 commit hash。gitreset--hardHEAD~1演示$gitreset--hardHEAD~1 HEAD is now at e4f5g6h 添加支付功能模块27. 安全撤销用新提交抵消旧提交gitrevertcommit-hash演示$gitrevert a1b2c3d[main f7g8h9i]Revert修复登录页面bug更新README1filechanged,3insertions(),25deletions(-)reset 三种模式对比面试常问模式本地仓库暂存区工作区适用场景--soft回退保留保留重新组织提交--mixed默认回退清空保留重新 add 再提交--hard回退清空清空彻底丢弃危险revert 与 reset 怎么选分支已经推送到远程、别人可能拉过 → 用revert生成新提交不改历史本地私有分支还没推 → 用reset干净不留「撤销提交」。八、储藏与标签28. 储藏当前修改gitstashgitstash save描述演示$gitstash save临时保存支付功能开发进度Saved working directory and index state On main: 临时保存支付功能开发进度29. 查看储藏列表gitstash list演示$gitstash list stash{0}: On main: 临时保存支付功能开发进度30. 恢复储藏命令说明git stash pop恢复并删除储藏git stash apply恢复但保留储藏演示$gitstash pop On branch main Changes not stagedforcommit: modified: payment.js31. 创建标签gittag标签名# 轻量标签gittag-a标签名-m说明# 附注标签推荐演示$gittag-av1.0.0-m第一个正式版本发布$gittag v1.0.032. 推送标签gitpush origin标签名gitpush origin--tags# 推送所有标签演示$gitpush origin v1.0.0git push默认不会推送标签发版时记得单独推。九、三个完整组合场景场景一日常开发完整流程# 1. 拉取最新代码gitpull origin main# 2. 创建功能分支gitswitch-cfeature-xxx# 3. 编写代码后添加修改gitadd.# 4. 提交gitcommit-m完成xxx功能# 5. 推送远程gitpush origin feature-xxx# 6. 在 GitHub / GitLab 上创建 Pull Request场景二紧急修复线上 Bug# 1. 切回主分支并拉取最新gitswitch maingitpull origin main# 2. 创建修复分支gitswitch-chotfix-urgent# 3. 修复 bug 后提交gitadd.gitcommit-m紧急修复支付异常# 4. 切回 main 并合并gitswitch maingitmerge hotfix-urgent# 5. 推送并清理gitpush origin maingitbranch-dhotfix-urgent场景三解决合并冲突$gitmerge feature-payment Auto-merging payment.js CONFLICT(content): Merge conflictinpayment.js Automatic merge failed;fix conflicts andthencommit.# 手动编辑 payment.js处理冲突标记# HEAD# 当前分支的内容# # 被合并分支的内容# feature-payment# 解决后标记完成$gitaddpayment.js $gitcommit-m合并 feature-payment解决冲突最需要记住的几句话主调节拍是 add → commit → push所有命令都是围绕「工作区、暂存区、本地仓库、远程仓库」四区搬东西。撤销分三层工作区用git restore暂存区用git restore --staged已提交的用revert公共分支或reset私有分支。reset --hard会真丢代码回车前先git log记下 hash给自己留一条后路。git push不推标签发版要git push origin tag或--tags。新写的分支功能别直接怼 main先switch -c拉分支走 Pull Request出事好回退。我的复盘我一开始把git checkout当万能命令用切分支用它、丢弃修改也用它。直到有一次想「放弃某个文件的改动」结果顺手把还没提交的整块工作区都洗掉了才明白一个命令承担太多语义就容易按错。后来 Git 2.23 出了switch专管分支和restore专管撤销我把肌肉记忆整体迁了过去误操作基本绝迹。另一个教训是reset --hard。现在我的习惯是任何回退操作前先git log --oneline截个 hash 放在终端里真删错了还能git reset --hard hash找回来。Git 的「删除」大多数时候只是移动了指针冷静下来都能救回来——但前提是你记得那个 hash。给读者的建议不要背命令清单按第九节的三个场景把完整流程各跑一遍找个测试仓库之后按场景回忆命令比按字母序背牢得多。提示git switch/git restore需要Git 2.23更早的版本请继续用git checkout系列。本系列导航01 Git 常用指令速查9 大分类 32 条核心命令与实战演示本篇02 Linux 命令速查大全82 条常用指令与面试高频考点