一、分支
1.git中如何保存版本
在我们以往使用文件来进行版本控制的时候,都是将上一个版本复制一份,然后在其基础上进行修改。
但在git中,git只保存当前版本和上一个版本之间的差异,这样可以节省存储空间, 在生成版本的时候速度也会更快。
2.Master主线
如下图所示:
当只有一条主线Master时,新版本都是在上一个版本的基础上进行修改的,例如Version2在Version1的100个文件基础上,新增了20个文件,并修改了其中10个文件。
也就是说Version2只需要保存新增的20个文件,以及修改的10个文件的修改信息,当我们需要Version2的时候,git再去Version1中拿未修改的90个文件。
同理,Version3、Version4也是如此。
3.分支概念
当我们需要已某个版本作为基准,同时开发多个新功能,则可能在该基准版本处产生分支,如下图所示:
处理线上系统的紧急BUG:
例如,Version3是已上线的版本, 我们在Version3的基础上开发新功能:
Version3突然出现紧急BUG,需要修复,怎么办?我们可以在Version3的基础上新开一个分支,专门用作BUG修复,修复完后合并到主分支:
而负责新功能开发的分支,可以继续研发新功能,不受影响。等到新功能开发测试完毕后,也可以合并到主分支Master中去。
4.创建分支(开发新功能)
1)查询分支信息
git branch
可以看到,我们目前只有一个master主分支。
2)创建新的分支(开发商城功能)
git branch dev_shop
使用命令创建了一个分支,叫做dev_shop。用于开发新功能,商城。
"*"号代表我们所处的分支。
3)切换分支
使用命令:
git checkout dev_shop
可以看到,我们已经切换到了dev_shop分支,我们在这个新分支下编写代码,是不会影响到其他分支的。
通过git log查看一下版本信息:
可以看到,我们所处的版本是"修改约饭-->约",但是分支处于dev_shop。而在这个版本处存在两个分支:master和dev_shop。相当于下图所示:
如果我们在dev_shop分支上再生成一个版本,则会变成如下:
在分支中添加了商城功能后,使用git log查看版本信息:
5.创建分支(修改BUG)
1)切换回master分支
git checkout master
2)创建新分支(修改BUG)
git branch bug
查看分支:
git branch
3)切换到BUG分支
git checkout bug
修改代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Index</title> </head> <body> <ul> <li>欧美</li> <li>日韩</li> <li>港台澳</li> <li>直播</li> <li>约</li> </ul> </body> </html>
将"港台"修改为"港台澳"。并提交生成新的版本。
此时查看git log:
此时的分支结构为:
6.合并分支
将bug分支合并到master分支中。
1)切换回master分支
git checkout master
2)合并bug分支
git merge bug
查看当前的版本信息:
当前的分支结构:
7.删除分支
当Master分支将bug分支合并之后,bug分支就没用了,可以使用命令删除bug分支:
git branch -d bug
删除后,查看当前分支信息:
可以看到bug分支已经被删除。
8.继续开发dev_shop
1)从Master切换到dev_shop
git checkout dev_shop
2)继续开发dev_shop,并提交
9.将dev_shop合并到Master中
1)切换回Master分支
git checkout master
2)合并dev_shop分支
git merge dev_shop
当合并的时候,如果没有冲突(例如都是添加代码),则可以自动合并。
自动合并后会生成一个新的版本:
如果产生了冲突(例如修改了同一行代码),则自动合并失败。
当产生冲突的之后,git会将两个文件所修改的地方全部放在文件中,然后由我们人工进行处理:
我们人工修改为最终版本后,再次进行git add 、 git commit操作,重新提交即可。手工生成的版本信息,由我们自己指定。
二、分支总结
1.查看分支
git branch
2.创建分支
git branch 分支名
3.切换分支
git checkout 分支名
4.合并分支
git merge 分支名
注意,假设分支2要合并到分支1中,则需要切换到分支1中执行"git merge 分支2"。
原文地址:https://www.cnblogs.com/leokale-zz/p/12115554.html