近期工作发现一个特别普遍的问题——Git 命令都会背一到实际场景就懵。比如这几个经典时刻你中了几条 代码写一半突然要切分支修紧急 bug当前代码怎么办git commit完发现备注写错了能改吗 合并分支弹出一堆冲突标记头皮发麻…… 听说git reset --hard能回退一按代码全没了……别慌这些场景我都踩过坑。这篇教程不给你背命令只讲场景。每个命令都配真实开发案例和踩坑提醒帮你把 Git 从记忆负担变成肌肉记忆。一、先搞懂三个区域后面所有命令就不慌了在动手之前咱们用 30 秒搞清楚 Git 的核心流转逻辑。搞懂这个后面所有命令你都能秒懂区域通俗理解类比工作区你电脑文件夹里肉眼看到的文件你的书桌暂存区 (Stage)临时中转站git add后文件先到这信封本地仓库 (.git)存放所有版本快照保险柜远程仓库Gitee/GitHub/GitLab 云端仓库网盘流转链路记住这条链后面所有命令都在这个链上操作修改文件 → git add 暂存 → git commit 提交本地 → git push 推送到远程老手习惯面试被问Git 工作原理把这条链路说清楚直接加分。二、环境配置——30 秒搞定以后不用再管1. 确认 Git 装好了git --version输出示例git version 2.42.0.windows.1有版本号就说明装好了 ✅2. 配置你的身份必须否则提交没有名字# 配置姓名 git config --global user.name Li Hua # 配置邮箱建议和 Gitee/GitHub 注册邮箱一致 git config --global user.email lihua163.com3. 查看配置是否生效git config --global --list输出示例user.nameLi Hua user.emaillihua163.com pull.rebasetrue init.defaultBranchmain color.uiauto小技巧--global表示全局配置一台电脑只需要配一次。之后所有项目都用这个身份提交。⚠️踩坑预警很多人装完 Git 忘了配邮箱就开始提交结果 commit 记录里显示一个陌生名字团队协同一脸尴尬。三、创建本地仓库——两种方式按需选择方式 1从零开始新建一个空项目场景老板说搞个新项目你本地啥都没有。# 1. 创建项目文件夹并进入 mkdir vue-demo cd vue-demo ​ # 2. 一键初始化 Git 仓库 git init输出Initialized empty Git repository in D:/code/vue-demo/.git/这时候你的文件夹里多了一个隐藏的.git目录这就是你的版本保险柜。老手习惯mkdircdgit init三步走几乎是每个项目的起手式形成肌肉记忆就行。方式 2从远程仓库拉下来团队协作最常用场景同事已经建好仓库了你需要把代码 clone 到本地开发。# 直接克隆 git clone https://gitee.com/xxx/vue-manage.git执行后自动生成vue-manage文件夹代码和.git都齐全。# 克隆并自定义文件夹名称 git clone https://gitee.com/xxx/vue-manage.git admin-project代码会下载到admin-project文件夹适合你想自己命名项目目录的场景。四、暂存、提交——你每天重复最多的操作准备场景项目里新建了 3 个文件index.html、style.css、app.js1. git status——我改了啥场景开发到一半想确认自己改了哪些文件哪些还没提交。git status输出Untracked files: index.html style.css app.js更推荐用简洁版git status --short输出?? index.html ?? style.css ?? app.js看懂这几个标记就行?? 新文件Git 还不认识它红色 修改了但没暂存绿色 已暂存等待提交老手习惯写代码过程中随时git status --short瞄一眼养成开发前先看看状态的习惯能避免很多低级错误。2. git add——把修改打包准备提交场景代码改完了告诉 Git 这些文件可以准备提交了。# 只添加一个文件 git add index.html ​ # 添加某一类文件 git add *.js ​ # 不管改了多少全部打包日常最常用 ✅ git add .小技巧git add .是日常用得最多的命令写完代码直接一把梭全放进去。那个.点号代表当前目录下所有文件。⚠️踩坑预警如果你没配好.gitignore后面会讲git add .会把node_modules、.env这些不该提交的文件也加进去很尴尬。3. git commit——正式打个包存进保险柜场景暂存区的文件准备好了正式生成一个版本快照。git commit -m feat: 初始化首页html、样式、js基础文件输出示例3 files changed, 30 insertions() create mode 100644 index.html create mode 100644 style.css create mode 100644 app.js进阶用法修改已有文件后跳过 add 直接提交# -a 参数 自动 add 所有已跟踪文件的修改 git commit -am fix: 调整首页文字排版小技巧-am组合拳只对已跟踪过的文件有效。新建的文件还是得老老实实git add再commit。后悔药修改上一条 commit 的备注git commit --amend -m feat: 初始化首页基础页面结构与样式⚠️踩坑预警--amend只能在还没 push 到远程的时候用已经推送到远程的 commit别用这个会搞乱历史。4. git log——查看提交记录场景想看看之前都提交了什么或者需要找到某个版本的 ID 来回退。# 完整日志信息很多日常不太用 git log ​ # 单行精简版强烈推荐 ✅ git log --oneline输出2f91ac3 (HEAD - main) feat: 初始化首页基础页面结构与样式前面的2f91ac3就是这次提交的唯一身份证号回退版本就靠它。# 图形化查看分支历史 git log --oneline --graph老手习惯日常开发用git log --oneline就够了。想更花哨可以加--graph --all看所有分支的提交图。五、.gitignore——别让垃圾文件污染你的仓库场景项目跑起来后会产生各种日志文件、node_modules、IDE 缓存……这些东西不需要提交到仓库但你git add .的时候它们会混进来。.gitignore就是告诉 Git这些文件你别管。完整模板直接复制用# 日志文件 *.log app.log error.log ​ # 依赖文件夹 node_modules/ dist/ build/ ​ # IDE 配置文件 .idea/ .vscode/ *.swp ​ # 系统文件 .DS_Store Thumbs.db ​ # 特殊不忽略某个文件取反语法 !important-config.js小技巧不同语言/框架的.gitignore模板不一样。推荐直接去 gitignore.io 生成选你的技术栈就完事了。已经误提交了怎么办假设app.log已经被你提交到仓库了现在想忽略它# 只移除 Git 跟踪本地文件保留不删 git rm --cached app.log git commit -m chore: 忽略日志文件⚠️踩坑预警git rm不带--cached会同时删除本地文件带--cached才是只取消跟踪。这个区别一定要记住。六、撤销与回退——写错代码的后悔药这部分是踩坑重灾区我会把每个操作的风险说清楚。场景 1文件改乱了想恢复到上次提交的版本# 恢复单个文件 git checkout -- index.html ​ # 恢复所有文件一把梭 git checkout -- .⚠️踩坑预警这个操作是不可逆的没提交的修改会直接消失。如果不确定要不要恢复先git stash存一下后面讲。场景 2已经 git add 了但不想提交这些文件# 取消单个文件的暂存 git reset HEAD index.html ​ # 取消所有文件的暂存 git reset HEAD .放心这个操作不会删除你的文件修改只是把它们从暂存区退回到工作区。场景 3版本回退需要 commit ID先通过git log --oneline拿到要回退到的版本号比如2f91ac3。# ① 软回退safe撤销 commit但修改保留在暂存区 git reset --soft 2f91ac3 ​ # ② 硬回退危险⚠️撤销 commit未提交的修改全部清空 git reset --hard 2f91ac3 ​ # 快速回退到上一个版本 git reset --hard HEAD~1记忆口诀--soft 只撤销 commit代码还在暂存区--mixed默认 撤销 commit add代码回到工作区--hard 全部清空回到那个版本干干净净⚠️踩坑预警git reset --hard是我见过最多人翻车的命令。已经执行了没提交的修改就真没了。我的建议执行前一定先git stash或git branch backup留个备份。七、分支操作——团队协作的核心技能为什么要用分支想象一下你正在开发登录页面代码写了一半突然线上出了个紧急 bug 要修。你总不能把半成品推上去吧分支就是让你分身——主线代码不受影响你在自己的分支上随便折腾。1. 查看、创建、切换分支# 查看当前所有本地分支 git branch输出* main*标记的就是你当前所在的分支。# 创建并切换到新分支新版 Git 推荐写法 ✅ git switch -c feat/login ​ # 旧版写法老项目常见 git checkout -b feat/login ​ # 切回主分支 git switch main小技巧分支命名建议用feat/xxx新功能、fix/xxx修复 bug这种前缀团队一眼就能看出这个分支是干嘛的。2. 删除分支# 安全删除已合并到主分支的 git branch -d feat/login ​ # 强制删除未合并的谨慎 git branch -D feat/login⚠️踩坑预警-D强制删除会丢失该分支上所有未合并的代码。删除前请三思。3. 合并分支merge——完整实操场景登录功能开发完毕要把代码合回主分支。# 第一步切回主分支 git switch main ​ # 第二步拉取远程最新代码防止冲突 git pull origin main ​ # 第三步合并功能分支 git merge feat/login ​ # 第四步推送合并后的代码 git push origin main4. 合并冲突怎么办合并时如果弹出了这样的提示Auto-merging index.html CONFLICT (content): Merge conflict in index.html别慌打开冲突文件你会看到这样的标记 HEAD h1首页/h1 h1登录页面/h1 feat/login怎么解决手动删掉、、这些标记保留你需要的代码可以两边的都保留、也可以只留一边保存文件然后git add . git commit -m merge: 合并登录功能分支老手习惯冲突不复杂本质就是Git 不知道怎么选让你来选。多人协作冲突很正常别怕。用 VSCode 的话它自带冲突解决工具点一点就能搞定。5. rebase 变基——让提交历史更漂亮场景你开发了好几天提交了很多次。合并前想把提交记录整理成一条线看起来更清爽。# 在功能分支上执行 git switch feat/login git rebase main如果出现冲突解决后继续git rebase --continue中途反悔想放弃git rebase --abort⚠️踩坑预警rebase 会改写提交历史。已经 push 到远程的公共分支千万别 rebase否则队友会疯。记住rebase 只用在本地私有分支上。八、远程仓库——和团队同步代码1. 查看和管理远程仓库# 查看远程仓库地址 git remote -v输出origin https://gitee.com/xxx/vue-demo.git (fetch) origin https://gitee.com/xxx/vue-demo.git (push)origin是远程仓库的默认别名你可以理解为远程仓库的昵称。# 本地新项目关联远程仓库 git remote add origin https://gitee.com/xxx/vue-demo.git ​ # 更换远程仓库地址 git remote set-url origin gitgitee.com:xxx/vue-demo.git2. 拉取代码# fetch只拉取不合并安全推荐 ✅ git fetch origin ​ # pull拉取 自动合并方便但可能冲突 git pull origin main老手习惯老手更喜欢先fetch看看远程更新了什么再手动merge心里有数。pullfetchmerge省事但不够可控。3. 推送代码# 首次推送-u 绑定远程关联以后就能直接 git push git push -u origin main ​ # 之后日常推送直接简写 git push ​ # 推送功能分支到远程 git push origin feat/login小技巧-u只需要用一次。绑定后 Git 就记住了我这个分支对应远程哪个分支后面直接git push就行。九、stash——代码写到一半先藏起来场景你正在开发用户列表页面代码写到一半——突然线上出了个紧急 bug 必须马上修。你的半成品代码又不能 commit 上去功能没写完啊怎么办答案用 stash 藏起来。# 第一步储藏当前所有未完成的修改顺便写个备注 git stash save 临时储藏用户列表页面开发一半 ​ # 第二步现在工作区干净了切到别的分支修 bug 去 git switch main # …… 修 bug提交push …… ​ # 第三步切回原分支 git switch feat/user ​ # 第四步恢复之前藏起来的代码 git stash pop其他 stash 相关操作# 查看所有储藏记录 git stash list输出stash{0}: On feat/user: 临时储藏用户列表页面开发一半小技巧git stash pop 恢复 删除记录。如果你想恢复但保留 stash 记录比如还要在别的分支用用git stash apply。十、tag 版本标签——给项目打个毕业照场景项目 v1.0.0 正式上线了你想在这个版本留个标记以后能随时找到这个版本。# 创建带备注的正式标签推荐 git tag -a v1.0.0 -m release 正式版本v1.0.0完成首页、登录功能 ​ # 查看所有标签 git tag # 输出v1.0.0 ​ # 推送标签到远程标签不会自动随 push 上传 git push origin v1.0.0# 删除本地标签 git tag -d v1.0.0 ​ # 删除远程标签 git push origin --delete v1.0.0⚠️踩坑预警很多人git push完发现远程没有 tag——因为标签需要单独推送要么git push origin v1.0.0推单个要么git push origin --tags一次性推所有标签。十一、两套完整开发流程——直接复制就能用流程 1新项目从零上传到远程仓库# 1. 全局配置只需一次 git config --global user.name Li Hua git config --global user.email lihua163.com ​ # 2. 创建项目并初始化 Git mkdir vue-admin cd vue-admin git init ​ # 3. 写代码配 .gitignore # 你的开发工作 ​ # 4. 提交到本地仓库 git add . git commit -m feat: 项目初始化基础框架 ​ # 5. 关联远程仓库 git remote add origin https://gitee.com/xxx/vue-admin.git ​ # 6. 推送到远程 git push -u origin main流程 2团队日常功能开发标准流程# 1. 同步主分支最新代码 git switch main git pull origin main ​ # 2. 创建功能分支 git switch -c feat/user-list ​ # 3. 开发 多次提交 git add . git commit -m feat: 用户列表页面基础布局 # ……继续开发继续提交…… ​ # 4. 推送功能分支到远程给自己留个备份 git push origin feat/user-list ​ # 5. 开发完成合并到主分支 git switch main git pull origin main git merge feat/user-list git push origin main ​ # 6. 清理已合并的分支 git branch -d feat/user-list git push origin --delete feat/user-list老手习惯第 4 步推送功能分支不是必须的但强烈建议做——万一本机硬盘挂了远程至少还有个备份。十二、Git 命令速查表建议截图保存 场景命令备注初始化本地仓库git init新项目第一步克隆远程项目git clone url接手别人的项目查看文件变更状态git status --short开发中最常用全部文件加入暂存git add .注意那个点号提交版本git commit -m 说明写清楚改了什么修改上次提交备注git commit --amend -m 新说明仅限未 push查看提交记录git log --oneline精简版最实用创建并切换分支git switch -c feat/xxx新功能开发切回某个分支git switch main合并分支git merge feat/xxx先切到目标分支再 merge拉取远程最新代码git pull origin main每天开始工作先拉一次推送当前分支git push首次需要-u储藏未完成代码git stash save 备注紧急切分支时救命恢复储藏的代码git stash pop恢复并删除记录放弃本地修改git checkout -- .⚠️ 不可逆取消暂存git reset HEAD .不影响文件内容回退到上一版本git reset --hard HEAD~1⚠️ 清空未提交代码软回退保留修改git reset --soft id安全的回退方式打版本标签git tag -a v1.0.0 -m 说明上线必备推送标签git push origin v1.0.0标签需要单独推忽略文件配置编辑.gitignore项目初始化就做查看远程仓库git remote -v关联远程仓库git remote add origin urlrebase 整理历史git rebase main⚠️ 仅限私有分支 下一步学什么恭喜你看完这 30 个命令日常开发场景基本够用了。如果你想继续进阶Git 分支策略——了解 Git Flow、GitHub Flow知道大团队怎么管理分支Rebase vs Merge 的选择——什么时候该 merge什么时候该 rebase交互式 Rebasegit rebase -i——把一堆零碎提交整理成漂亮的提交历史Git Hooks——在 commit 前自动跑代码检查、格式化推荐工具VSCode 的GitLens插件能让你看到每一行代码是谁写的、什么时候改的非常强大❤️ 最后Git 这东西命令不难难的是在对的场景用对的命令。这篇文章里的每一个命令我都配了真实场景和踩坑提醒。建议你先收藏遇到问题回来翻一翻用几次就形成肌肉记忆了。觉得有用的话转发给你的同事朋友吧——独乐乐不如众乐乐