@@ -8,6 +8,8 @@ PDF制作github: https://github.com/sjsdfg/CS-Notes-PDF
8
8
9
9
Git 属于分布式版本控制系统,而 SVN 属于集中式。
10
10
11
+ <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/fac3dfd6-1656-4329-9a80-7f6c51ef30c5_200.png " /> </div >
12
+
11
13
集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。
12
14
13
15
集中式版本控制有安全性问题,当中心服务器挂了所有人都没办法工作了。
@@ -24,49 +26,49 @@ Github 就是一个中心服务器。
24
26
25
27
# 工作流
26
28
27
- <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/a1198642-9159-4d88-8aec-c3b04e7a2563.jpg " /> </div >
28
-
29
29
新建一个仓库之后,当前目录就成为了工作区,工作区下有一个隐藏目录 .git,它属于 Git 的版本库。
30
30
31
- Git 版本库有一个称为 stage 的暂存区,还有自动创建的 master 分支以及指向分支的 HEAD 指针 。
31
+ Git 的版本库有一个称为 Stage 的暂存区以及最后的 History 版本库,History 中存有所有分支,使用一个 HEAD 指针指向当前分支 。
32
32
33
- <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/46f66e88-e65a-4ad0-a060-3c63fe22947c .png " /> </div >
33
+ <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/0f9b9d2a-c5cc-4a3f-b138-2c1035950f39_200 .png " /> </div >
34
34
35
35
- git add files 把文件的修改添加到暂存区
36
36
- git commit 把暂存区的修改提交到当前分支,提交之后暂存区就被清空了
37
37
- git reset -- files 使用当前分支上的修改覆盖暂存区,用来撤销最后一次 git add files
38
38
- git checkout -- files 使用暂存区的修改覆盖工作目录,用来撤销本地修改
39
39
40
- <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/17976404-95f5-480e-9cb4-250e6aa1d55f .png " /> </div >
40
+ <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/11a786f0-5e02-46a6-92f0-f302c9cf6ca3_200 .png " /> </div >
41
41
42
42
可以跳过暂存区域直接从分支中取出修改,或者直接提交修改到分支中。
43
43
44
44
- git commit -a 直接把所有文件的修改添加到暂存区然后执行提交
45
45
- git checkout HEAD -- files 取出最后一次修改,可以用来进行回滚操作
46
46
47
+ <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/b48b9a7a-f9f8-4cf9-90f1-5cddd685b782_200.png " /> </div >
48
+
47
49
# 分支实现
48
50
49
51
使用指针将每个提交连接成一条时间线,HEAD 指针指向当前分支指针。
50
52
51
- <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/fb546e12-e1fb-4b72-a1fb-8a7f5000dce6.jpg " /> </div >
53
+ <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/84d496d7-54b0-4a9b-9499-ce232057e499_200.png " /> </div >
52
54
53
55
新建分支是新建一个指针指向时间线的最后一个节点,并让 HEAD 指针指向新分支表示新分支成为当前分支。
54
56
55
- <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/bc775758-89ab-4805-9f9c-78b8739cf780.jpg " /> </div >
57
+ <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/7c5bcdbf-e656-4b7c-be82-b247a3589ed5_200.png " /> </div >
56
58
57
59
每次提交只会让当前分支指针向前移动,而其它分支指针不会移动。
58
60
59
- <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/5292faa6-0141-4638-bf0f-bb95b081dcba.jpg " /> </div >
61
+ <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/13783e94-b481-4aea-9fa2-9d1973abd47e_200.png " /> </div >
60
62
61
63
合并分支也只需要改变指针即可。
62
64
63
- <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/1164a71f-413d-494a-9cc8-679fb6a2613d.jpg " /> </div >
65
+ <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/15699a17-5a69-4fbe-852e-9d2b7cf05e80_200.png " /> </div >
64
66
65
67
# 冲突
66
68
67
69
当两个分支都对同一个文件的同一行进行了修改,在分支合并时就会产生冲突。
68
70
69
- <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/58e57a21-6b6b-40b6-af85-956dd4e0f55a.jpg " /> </div >
71
+ <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/7e82ce01-2afb-4c15-b720-b81049c875c2_200.png " /> </div >
70
72
71
73
Git 会使用 <<<<<<< ,======= ,>>>>>>> 标记出不同分支的内容,只需要把不同分支中冲突部分修改成一样就能解决冲突。
72
74
@@ -88,7 +90,7 @@ Creating a new branch is quick AND simple.
88
90
$ git merge --no-ff -m "merge with no-ff" dev
89
91
```
90
92
91
- <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/dd78a1fe-1ff3-4bcf-a56f-8c003995beb6.jpg " /> </div >
93
+ <div align =" center " > <img src =" https://github.com/CyC2018/CS-Notes/raw/master/docs/notes/pics/fa1dc552-8501-439e-b85a-3d9eac704880_200.png " /> </div >
92
94
93
95
# 分支管理策略
94
96
0 commit comments