Files
test-repo/docs/zh-cn/appendix/git-intro.md
T

102 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Git 版本控制:时间的后悔药
> 💡 **一句话解释**:Git 就是代码世界的**游戏存档管理器**。它能让你随时“读档”重来,也能让你和队友在各自的“平行宇宙”里互不干扰地开发。
> ✅ **安全说明**:本页所有交互组件都是“模拟器”,不会对你电脑上的真实 Git 仓库执行任何操作;但真实项目里建议严格按步骤来,不要依赖“自动下一步”。
## 0. 最常用的 5 个场景(直接照抄)
如果你只想“立刻能用”,先把这块过一遍:每个场景都是现实工作中最常见的 Git 流程。
<GitScenariosDemo />
## 1. 为什么我们需要它?
你是否经历过这种绝望?
```text
论文_初稿.doc
论文_修改版.doc
论文_最终版.doc
论文_最终版_打死不改版.doc
论文_绝对是最后一次修改版.doc
```
**Git 完美解决了三个问题**
1. **版本混乱**:不需要复制副本,一个文件夹搞定所有历史版本。
2. **无法后悔**:删错了代码?一秒钟找回三天前的状态。
3. **协作冲突**:你改了 A 文件,我改了 B 文件,Git 帮我们自动合并。
---
## 2. 核心概念:三个箱子
Git 的设计哲学其实很像**寄快递**。
<GitThreeAreasDemo />
- **工作区 (Working Dir)**:你的**书桌**。你正在这里写代码,想怎么乱改都行。
- **暂存区 (Staging Area)**:**快递盒**。你把写好的文件放进去(`git add`),准备打包。
- **仓库 (Repository)****快递柜**。一旦你封箱寄出(`git commit`),这个版本就被永久记录下来了。
> 🔑 **关键点**:只有提交(Commit)到仓库的内容,才是安全的。工作区里没提交的内容,丢了就真丢了。
---
## 3. 基础工作流:存档三步走
日常开发中,你 90% 的时间都在重复这三个动作。
<GitWorkflowDemo />
1. **修改代码**:在工作区写写画画。
2. **`git add`**:挑选你要保存的文件,放入暂存区。
3. **`git commit`**:给这次修改起个名字(比如“修复了登录 Bug”),永久存档。
---
## 4. 平行宇宙:分支 (Branch)
这是 Git 最强大的功能。想象你在玩游戏,前面有个大 Boss(上线新功能),你怕打不过导致游戏结束(系统崩溃)。
这时候,你可以开一个**分支 (Branch)**,相当于**复制了一个平行世界**。
<GitBranchMergeDemo />
- **主分支 (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)**。
<GitConflictDemo />
此时你需要手动打开文件,保留需要的代码,删除 Git 自动生成的 `<<<<<<<` 标记,然后重新提交。
至于**远程仓库 (Remote)**(比如 GitHub/GitLab),它就是云端的备份中心。
- `git push`:把本地存档上传到云端。
- `git pull`:把云端最新的存档拉取到本地。
<GitRemoteDemo />