分支在Git中相对较难,可以将分支理解为科幻电影里面的平行宇宙,如果两个平行宇宙互补干扰,那对现在的你也没啥影响
不过,在某个时间点,两个平行宇宙合并了,我们就需要处理一些问题了!
常用Git分支命令行预览:
# 列出所有本地分支 git branch # 列出所有远程分支 git branch -r # 新建一个分支,但依然停留在当前分支 git branch [branch-name] # 新建一个分支,并切换到该分支 git checkout -b [branch] # 合并指定分支到当前分支 git merge [branch] # 删除分支 git branch -d [brach-name] # 删除远程分支 git push orgin --delete [branch-name] git branch -dr [remote/branch]
# 切换到D盘的gitcode目录下 cd /D/ProgramFiles/Git/gitcode # 列出gitcode目录下的所有文件 ls # 切换到gitlearn目录下 cd gitlearn
# 列出所有本地分支 git branch # 列出所有远程分支 git branch -r
结果:通过观察可以看到,本地分支只有一个master分支,而远程分支是origin/master
# 新建一个分支,[branch-name]表示分支名,但依然停留在当前分支 git branch [branch-name]
# 新建一个dev分支,表示开发分支 git branch dev # 再次查看本地的所有分支 git branch
结果:成功创建了新的分支dev,本地分支变成了master和dev分支!
# 新建一个分支,并切换到该分支,[branch]表示创建的新分支名 git checkout -b [branch]
# 新建一个test分支,表示测试分支,并且切换到test分支去 git checkout -b test # 查看添加新分支后的本地所有分支 git branch
结果:成功创建了新分支test,并且切换到该分支下,本地所有分支也变为了dev、master和test三个分支!
在Git的Log日志下,我们清楚的看到了Local本地下的三个分支:test、master和dev,Remote远程此时还是只有origin下的master分支
由于我们刚才使用git命令切换到了test分支,所以右下角的分支显示的是test!
# 删除分支,[brach-name]表示要删除的分支名 git branch -d [brach-name]
# 删除test测试分支 git branch -d test # 查看删除test分支后的本地所有分支 git branch
结果:成功删除test分支,本地分支只剩下了dev和master!
在 Git --> Log日志 --> Local本地下,也只剩两个分支:master和dev
如果多个分支如果并行执行,就会导致我们代码冲突,也就是用时存在多个版本!
这里举个简单例子来说明,假设某个公司要开发某个新项目,有三个分支:分别是Web-Admin (管理员,简称为分支A或者主分支)、Web-API (PC端的开发,简称为分支B)、 和Web-App (移动端开发,简称为分支C),这三个分支之间可能会存在相互调用
遇到同一个文件在合并分支时都被修改时,如果双方都进行提交,必然会引起代码冲突:
举例来说明,假如B、C两个分支都修改一个RestFul类的xx方法并且进行合并提交,就会存在代码冲突问题 !
解决的办法是我们可以修改冲突文件后再重新提交,例如发现有冲突后,就需要进行协商,是选择保留他的代码还是你的代码
master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作;
一般会在新建的dev开发分支上工作,dev分支代码稳定后,才可以合并到主分支master上来;工作完后,比如要上线发布,还会有test分支,进行上线前的测试
好了,有关Git分支的学习到这里就结束了,欢迎大家学习和讨论!
参考视频链接:https://www.bilibili.com/video/BV1FE411P7B3(B站UP主遇见狂神说的Git快速入门)