# Git 版本控制:时间的后悔药 > 💡 **一句话解释**:Git 就是代码世界的**游戏存档管理器**。它能让你随时“读档”重来,也能让你和队友在各自的“平行宇宙”里互不干扰地开发。 > ✅ **安全说明**:本页所有交互组件都是“模拟器”,不会对你电脑上的真实 Git 仓库执行任何操作;但真实项目里建议严格按步骤来,不要依赖“自动下一步”。 ## 0. 最常用的 5 个场景(直接照抄) 如果你只想“立刻能用”,先把这块过一遍:每个场景都是现实工作中最常见的 Git 流程。 ## 1. 为什么我们需要它? 你是否经历过这种绝望? ```text 论文_初稿.doc 论文_修改版.doc 论文_最终版.doc 论文_最终版_打死不改版.doc 论文_绝对是最后一次修改版.doc ``` **Git 完美解决了三个问题**: 1. **版本混乱**:不需要复制副本,一个文件夹搞定所有历史版本。 2. **无法后悔**:删错了代码?一秒钟找回三天前的状态。 3. **协作冲突**:你改了 A 文件,我改了 B 文件,Git 帮我们自动合并。 --- ## 2. 核心概念:三个箱子 Git 的设计哲学其实很像**寄快递**。 - **工作区 (Working Dir)**:你的**书桌**。你正在这里写代码,想怎么乱改都行。 - **暂存区 (Staging Area)**:**快递盒**。你把写好的文件放进去(`git add`),准备打包。 - **仓库 (Repository)**:**快递柜**。一旦你封箱寄出(`git commit`),这个版本就被永久记录下来了。 > 🔑 **关键点**:只有提交(Commit)到仓库的内容,才是安全的。工作区里没提交的内容,丢了就真丢了。 --- ## 3. 基础工作流:存档三步走 日常开发中,你 90% 的时间都在重复这三个动作。 1. **修改代码**:在工作区写写画画。 2. **`git add`**:挑选你要保存的文件,放入暂存区。 3. **`git commit`**:给这次修改起个名字(比如“修复了登录 Bug”),永久存档。 --- ## 4. 平行宇宙:分支 (Branch) 这是 Git 最强大的功能。想象你在玩游戏,前面有个大 Boss(上线新功能),你怕打不过导致游戏结束(系统崩溃)。 这时候,你可以开一个**分支 (Branch)**,相当于**复制了一个平行世界**。 - **主分支 (Main/Master)**:稳定的线上版本,只有测试通过的代码才能进来。 - **开发分支 (Feature)**:你的试验田。你在这里炸了地球也没关系,不会影响主分支。 - **合并 (Merge)**:你在试验田里测试成功了,就把改动“合并”回主分支。 --- ## 5. 常用命令速查 | 命令 | 作用 | 人话解释 | | :-------------------- | :------------- | :------------------------------------- | | `git init` | 初始化 | "我要在这里建个新仓库" | | `git status` | 查看状态 | "现在书桌上乱不乱?有没有东西没装箱?" | | `git add .` | 添加所有 | "把桌上所有文件都扔进快递盒" | | `git commit -m "..."` | 提交 | "封箱!贴上标签,写上这次改了啥" | | `git log` | 查看历史 | "翻翻以前的日记" | | `git checkout -b dev` | 以此创建新分支 | "我要去平行宇宙 dev 探险了" | | `git checkout main` | 切换分支 | "回地球(主分支)看看" | | `git merge dev` | 合并分支 | "把平行宇宙的成果带回地球" | --- ## 6. 进阶:解决冲突与远程协作 当你和队友同时修改了同一个文件的同一行代码,Git 就会懵逼:“我该听谁的?” 这就是**冲突 (Conflict)**。 此时你需要手动打开文件,保留需要的代码,删除 Git 自动生成的 `<<<<<<<` 标记,然后重新提交。 至于**远程仓库 (Remote)**(比如 GitHub/GitLab),它就是云端的备份中心。 - `git push`:把本地存档上传到云端。 - `git pull`:把云端最新的存档拉取到本地。