Skip to content

Commit 71fe728

Browse files
authored
fix issues in ch3 (#86)
* fix issues in ch3 * fix issues in ch3
1 parent f077748 commit 71fe728

File tree

7 files changed

+677
-913
lines changed

7 files changed

+677
-913
lines changed

docs/ch3/index.md

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44
[@Dreadful_Me](https://github.com/Dreadful_Me)
55

66
## 🚀 开启 Git 与协作之旅
7+
78
本章将带您系统掌握开源贡献全流程技能,从 Git 基础到高级协作,从个人项目管理到社区级贡献,通过渐进式学习路径成长为合格的开源贡献者。
89

910
## markdown 基础
11+
1012
!!! note 基本语法
1113
在这里,你将学习:
1214

@@ -26,7 +28,6 @@
2628

2729
8. 最后,利用**分割线**让不同的段落泾渭分明
2830

29-
3031
!!! warning 进阶语法
3132
除了基本的对文本的操作,markdown 文档能做的不止于此:
3233

@@ -41,18 +42,19 @@
4142
- ......
4243

4344
## 💡 四阶段学习体系
45+
4446
### 1. [导学阶段](https://oss.hust.openatom.club/ch3/sec1/subsec1/1-git-introduction/)
4547
!!! tip "环境准备三步走"
4648
1. **平台初识**:GitHub/Gitee 功能探索
4749
2. **实战入门**:创建首个仓库
4850
3. **合规起点**:选择开源许可证
4951

5052
!!! example "核心任务卡"
51-
```mermaid
52-
graph TB
53-
A[注册GitHub] --> B[创建个人仓库]
54-
A --> C[Fork俱乐部项目]
55-
B --> D[配置README]
53+
```mermaid
54+
graph TB
55+
A[注册GitHub] --> B[创建个人仓库]
56+
A --> C[Fork俱乐部项目]
57+
B --> D[配置README]
5658
C --> E[提交首个Issue]
5759
```
5860

@@ -61,17 +63,17 @@
6163
| 场景 | 核心命令 | 应用要点 |
6264
|------|----------|----------|
6365
| 版本控制 | `git init/clone` | 建立版本库 |
64-
| 变更管理 | `git add/commit` | 原子性提交 |
65-
| 问题排查 | `git diff/reset` | 撤销与比对 |
66+
| 变更管理 | `git add/commit` | 原子性提交 |
67+
| 问题排查 | `git diff/reset` | 撤销与比对 |
6668

6769
### 3. [专业阶段](https://oss.hust.openatom.club/ch3/sec1/subsec3/1-rebase-merge/)
6870
!!! tip "高级工作流"
69-
```mermaid
70-
graph LR
71-
A[特性分支] --> B{合并策略}
72-
B -->|协作开发| C[Rebase]
73-
B -->|公共分支| D[Merge]
74-
C --> E[整洁历史]
71+
```mermaid
72+
graph LR
73+
A[特性分支] --> B{合并策略}
74+
B -->|协作开发| C[Rebase]
75+
B -->|公共分支| D[Merge]
76+
C --> E[整洁历史]
7577
D --> F[保留轨迹]
7678
```
7779

@@ -82,16 +84,17 @@
8284
- 通过邮件列表提交
8385

8486
!!! success "团队协作评估"
85-
```mermaid
87+
```mermaid
8688
pie
87-
title 贡献评估维度
89+
title 贡献评估维度
8890
"代码质量" : 40
8991
"文档完善" : 25
9092
"Issue解决" : 20
9193
"社区互动" : 15
9294
```
9395

9496
## 🔧 开发工具箱
97+
9598
| 类别 | 推荐工具 | 应用场景 |
9699
|------------|-------------------------|-----------------------|
97100
| **版本控制** | Git + GitLens | 代码历史管理 |
@@ -100,6 +103,7 @@
100103
| **调试分析** | GitHub Network Graph | 项目关系可视化 |
101104

102105
## 🌟 拓展技能树
106+
103107
```mermaid
104108
graph TD
105109
A[开源贡献技能] --> B[Linux训练营]
@@ -112,9 +116,10 @@ graph TD
112116
D --> I[Markdown精通]
113117
D --> J[文档工程]
114118
```
119+
115120
## 🔧明星工具推荐
116-
!!! example "效率提升神器"
121+
117122
- tmux:终端会话管理(多窗口操作)
118123
- better-commits:规范化提交助手
119124
- opencommit:AI 生成提交信息
120-
- pre-commit:自动化代码检查
125+
- pre-commit:自动化代码检查
Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,46 @@
1-
## Git Rebase vs. Git Merge:选哪个?🤔
1+
# Git Rebase vs. Git Merge:选哪个?🤔
22

33
**目的:**搞懂 Git 这两种合并分支的酷炫方式,以后合并代码不再纠结!
44

55
**内容:**
66

77
咱们先不讲那些复杂的理论,直接上例子,保证你一看就明白!
88

9-
### 场景模拟:团队合作开发新功能 🚀
9+
## 场景模拟:团队合作开发新功能 🚀
1010

1111
假设你和小伙伴们正在一起开发一个超酷炫的新功能,每个人负责一部分:
1212

13-
* **你:**负责开发用户登录界面 (在 `feature/login` 分支)
14-
* **小伙伴 A:**负责开发商品展示页面 (在 `feature/product` 分支)
15-
* **主分支:**`main` 分支,是大家共同的基础
13+
* **你:**负责开发用户登录界面 (在 `feature/login` 分支)
14+
* **小伙伴 A:**负责开发商品展示页面 (在 `feature/product` 分支)
15+
* **主分支:**`main` 分支,是大家共同的基础
1616

17-
#### Git Merge:简单粗暴,历史全记录 📖
17+
### Git Merge:简单粗暴,历史全记录 📖
1818

19-
1. **你完成了登录界面的开发,想要把代码合并到 `main` 分支:**
19+
1. **你完成了登录界面的开发,想要把代码合并到 `main` 分支:**
2020

2121
```bash
2222
git checkout main # 切换到 main 分支
2323
git merge feature/login # 把 feature/login 分支合并到 main 分支
2424
```
2525

26-
* **结果:**Git 会创建一个新的合并提交(merge commit),把你的 `feature/login` 分支和 `main` 分支的最新代码合并在一起。
26+
* **结果:**Git 会创建一个新的合并提交(merge commit),把你的 `feature/login` 分支和 `main` 分支的最新代码合并在一起。
2727

28-
* **特点:**简单!`main` 分支的历史记录会完整保留所有分支的开发过程,就像一本详细的日记。
28+
* **特点:**简单!`main` 分支的历史记录会完整保留所有分支的开发过程,就像一本详细的日记。
2929

30-
2. **小伙伴 A 也完成了商品展示页面的开发,同样合并到 `main` 分支:**
30+
2. **小伙伴 A 也完成了商品展示页面的开发,同样合并到 `main` 分支:**
3131

3232
```bash
3333
git checkout main
3434
git merge feature/product
3535
```
3636

37-
* **结果:**又多了一个合并提交!
37+
* **结果:**又多了一个合并提交!
3838

39-
* **潜在问题:**如果很多人都在不同的分支上开发,`main` 分支的历史记录可能会变得很乱,像蜘蛛网一样 🕸️。
39+
* **潜在问题:**如果很多人都在不同的分支上开发,`main` 分支的历史记录可能会变得很乱,像蜘蛛网一样 🕸️。
4040

41-
#### Git Rebase:乾坤大挪移,历史更清晰 ✨
41+
### Git Rebase:乾坤大挪移,历史更清晰 ✨
4242

43-
1. **你完成了登录界面的开发,这次咱们用 `rebase`**
43+
1. **你完成了登录界面的开发,这次咱们用 `rebase`**
4444

4545
```bash
4646
git checkout feature/login # 切换到 feature/login 分支
@@ -49,13 +49,13 @@
4949
git merge feature/login # 快速向前合并
5050
```
5151

52-
* **结果:**
53-
* `rebase` 会把你的 `feature/login` 分支上的提交“移动”到 `main` 分支的最新提交之后。就像是把你的分支“嫁接”到了 `main` 分支上。
54-
* 然后再次在 `main` 进行 `merge` 时,由于 `feature/login` 是直接从 `main` 分支“生长”出来的,所以可以直接快速合并(fast-forward),不会产生额外的合并提交。
52+
* **结果:**
53+
* `rebase` 会把你的 `feature/login` 分支上的提交“移动”到 `main` 分支的最新提交之后。就像是把你的分支“嫁接”到了 `main` 分支上。
54+
* 然后再次在 `main` 进行 `merge` 时,由于 `feature/login` 是直接从 `main` 分支“生长”出来的,所以可以直接快速合并(fast-forward),不会产生额外的合并提交。
5555

56-
* **特点:**干净!`main` 分支的历史记录会是一条直线,非常清晰。
56+
* **特点:**干净!`main` 分支的历史记录会是一条直线,非常清晰。
5757

58-
2. **小伙伴 A 也用 `rebase` 合并:**
58+
2. **小伙伴 A 也用 `rebase` 合并:**
5959

6060
```bash
6161
git checkout feature/product
@@ -64,11 +64,11 @@
6464
git merge feature/product #快速向前合并
6565
```
6666

67-
* **结果:**同样,`main` 分支的历史记录依然保持一条直线。
67+
* **结果:**同样,`main` 分支的历史记录依然保持一条直线。
6868

69-
* **潜在问题:**`rebase` 会改写提交历史,如果你已经把 `feature/login` 分支推送到远程仓库,并且其他人在这个分支上工作,就不要用 `rebase` 了,否则会造成混乱。
69+
* **潜在问题:**`rebase` 会改写提交历史,如果你已经把 `feature/login` 分支推送到远程仓库,并且其他人在这个分支上工作,就不要用 `rebase` 了,否则会造成混乱。
7070

71-
### 总结:选哪个?
71+
## 总结:选哪个?
7272

7373
| 特性 | Git Merge | Git Rebase |
7474
| :----------- | :---------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------ |
@@ -79,10 +79,10 @@
7979
| **比喻** | **像一本详细的日记,记录了所有发生的事情** | **像一棵树,主干清晰,分支从主干生长出来** |
8080
| **口诀** | **`merge`虽乱心不乱,`rebase`虽直易出错** | **`merge`虽乱心不乱,`rebase`虽直易出错** |
8181

82-
### 趣味小练习 🎮
82+
## 趣味小练习 🎮
8383

84-
1. 自己创建几个分支,分别用 `git merge``git rebase` 进行合并,看看有什么不同。
85-
2. 试着画出两种合并方式的提交历史图,加深理解。
86-
3. 思考一下,在你的团队项目中,哪种合并方式更适合?
84+
1. 自己创建几个分支,分别用 `git merge``git rebase` 进行合并,看看有什么不同。
85+
2. 试着画出两种合并方式的提交历史图,加深理解。
86+
3. 思考一下,在你的团队项目中,哪种合并方式更适合?
8787

8888
希望这个文档能帮助你更好地理解 Git Rebase 和 Git Merge!记住,实践出真知,多动手试试,你会发现 Git 其实很有趣!😉
Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,74 @@
1-
## 4.1.3.2 Git 分布式版本控制工作原理
1+
# 4.1.3.2 Git 分布式版本控制工作原理
2+
3+
## 目的
24

3-
### 目的
45
理解 Git 的分布式版本控制工作原理,掌握如何在本地和远程分支之间协作和合并。
56

6-
### 内容
7+
## 内容
8+
9+
### 1。Git 的分布式特性
710

8-
#### 1。Git 的分布式特性
911
Git 是一个分布式版本控制系统,与集中式版本控制系统(如 SVN)不同,每个开发者的本地仓库都是完整的副本,包含了项目的完整历史记录。这种设计使得开发者即使在没有网络连接的情况下也可以进行大部分操作。Git 在处理版本控制时,不依赖于中央服务器,开发者可以随时推送、拉取代码,且不影响其他开发者的工作。
1012

11-
#### 2。分支管理与协作
13+
### 2。分支管理与协作
14+
1215
在 Git 中,分支允许开发者并行工作。每个开发者可以在自己的本地仓库中创建一个分支,进行独立开发,直到完成后再合并到主分支。分支的协作方式使得开发者能够在不干扰他人的情况下进行功能开发、bug 修复或实验性修改。常见的分支类型包括:
16+
1317
- **主分支(master/main)**:项目的主干分支,通常保持稳定状态。
1418
- **功能分支(feature)**:为实现某个特定功能而创建的分支,完成开发后会合并回主分支。
1519
- **修复分支(hotfix)**:用于紧急修复生产环境中的问题。
1620
- **开发分支(develop)**:团队协作中用于集成各种功能分支的分支。
1721

18-
#### 3。合并远程分支与本地分支
22+
### 3。合并远程分支与本地分支
23+
1924
当开发者从远程仓库拉取更新(`git pull`)时,可能会遇到合并远程分支与本地分支的情况。Git 提供了几种方式来处理分支的合并:
25+
2026
- **Git Merge**:通过 `git merge` 命令将不同分支的修改合并。此操作会生成一个新的合并提交,保留两个分支的历史记录。合并时,如果两个分支在同一部分文件有不同修改,Git 会提示冲突,需要手动解决。
27+
2128
```bash
2229
git checkout main
2330
git pull origin main
2431
git merge feature-branch
2532
```
33+
2634
- **Git Rebase**:通过 git rebase 命令将一个分支的提交“重放”到另一个分支的顶部。与 merge 不同,rebase 不会产生合并提交,而是将目标分支的修改按时间顺序添加到当前分支。这使得历史记录看起来更为线性,但也会改变提交历史,因此在共享分支上使用时需要谨慎。
35+
2736
```bash
2837
git checkout feature-branch
2938
git rebase main
3039
```
31-
#### 4。处理分支冲突
40+
41+
### 4。处理分支冲突
42+
3243
在合并分支时,可能会发生冲突,尤其是在多个开发者同时修改相同文件的情况下。Git 无法自动合并这些冲突,因此需要开发者手动干预。冲突的解决通常包括:
44+
3345
- 查看冲突文件,找到冲突标记的位置。
3446
- 使用 git add 命令将解决后的文件标记为已解决。
3547
- 使用 git commit 提交合并结果。
3648
冲突的示例:
49+
3750
```bash
3851
# 发生冲突后,编辑冲突文件
3952
git add conflicted-file
4053
git commit -m "Resolved merge conflict"
4154
```
42-
#### 5。推送与拉取操作
55+
56+
### 5。推送与拉取操作
57+
4358
**推送(Push)**:将本地仓库的更改提交到远程仓库。推送操作要求本地分支与远程分支保持同步,且在推送之前需要先拉取(git pull)远程仓库的更新,以避免冲突。
59+
4460
```bash
4561
git push origin feature-branch
4662
```
63+
4764
**拉取(Pull)**:将远程仓库的更改拉取到本地仓库。拉取时 Git 会自动进行合并,或者如果使用 git pull --rebase,则会使用 rebase 方式进行合并。
65+
4866
```bash
4967
git pull origin main
5068
```
51-
#### 6.Git 工作流建议
69+
70+
### 6.Git 工作流建议
71+
5272
为了更高效地进行团队协作,Git 团队工作流通常包括以下几个步骤:
5373
**1** 在主分支上拉取最新的代码。
5474
**2** 创建功能分支并开发新特性。
@@ -57,5 +77,7 @@ git pull origin main
5777
**5** 提交 Pull Request 进行代码审查与合并。
5878
**6** 删除已合并的分支。
5979
这种工作流确保了团队成员之间的协作高效、代码合并清晰,并且避免了频繁的冲突。
60-
### 总结
80+
81+
## 总结
82+
6183
Git 的分布式版本控制提供了灵活、高效的协作机制。开发者通过分支和合并操作,可以在不同分支上并行工作,同时确保代码的整合性。理解 Git 的工作原理,尤其是如何在不同分支间协作与合并,是使用 Git 进行版本控制的重要技能。

0 commit comments

Comments
 (0)