分支的概念
分支在实际开发中的作用
在进行多人协作开发的时候,为了防止互相干扰,提高协同开发的体验,建议每个开发者都基于分支进行项目功能的开发,例如:
master主分支
在初始化本地Git仓库的时候,Git默认已经帮我们创建了一个名字叫做master的分支。通常我们把这个master分支叫做主分支。
在实际工作中,master主分支的作用是:用来保存和记录整个项目已完成的功能代码。
因此,不允许程序员直接在master分支上修改代码,因为这样做的风险太高,容易导致整个项目崩溃。
功能分支
由于程序员不能直接在master分支是进行功能的开发,所以就有了功能分支的概念。 功能分支指的是专门用来开发新功能的分支,它是临时从master主分支上分叉出来的,当新功能开发且测试完毕后,最终需要合并到master主分支上
查看分支列表branch(分支)
git branch
注意:分支名字面前的星号表示当前所处的分支
创建新分支
git branch 分支名称
使用如下的命令,可以基于当前分支,创建一个新的分支,此时,新分支中的代码和当前分支完全一样:git branch 分支名称
注意:当我们利用git branch login 创建了一个login分支之后,用户当前所处的还是主分支,而没有切换到login新创的分支当中
如何切换分支
git checkout 要切换的分支名称
可以看到我们已将将分支切换到login上。
分支的快速创建和切换
git checkout -b 创建并切换分支的名称
注意:"git checkout -b"是下面两条命令的简写形式:
- git branch 分支名称
- git checkout 分支名称
- -b 表示创建一个新分支
- checkout 表示切换到刚才新建的分支上
合并分支merge(合并)
git checkout 主分支名称
git merge 需要合并到主分支的分支名称
合并分支时的注意点:
假设要把C分支的代码合并到A分支,则必须先切换到A分支上,再运行git merge命令,来合并C分支。
删除分支
git branch -b 分支名称
当如果我们还处在想要删除的分支时运行git branch -d命令时
遇到冲突时的分支合并如何解决
如果在两个不同的分支中,对同一文件进行了不同的修改,Git就没法去干净的合并它们,此时需要打开这些包含冲突的文件然后手动解决冲突。
出现合并冲突问题
当我们切换回主分支时运行git merge命令时会报错,无法进行合并。因为你在主分支的文件有原来的内容,你合并的分支又修改了主分支当前文件夹的内容,导致主分支和合并的分支文件内容不一致就会产生冲突问题。
解决办法:我们打开vscodes选择这四个选项的某一种
手动解决后我们要将文件添加到暂存区运行 git add .命令,然后再运行git commit -m 命令声明并提交到未修改状态。
将本地分支推送到远程仓库
git push -u 远程仓库的别名 本地分支名称:远程分支名称
如果是第一次将本地分支推送到远程仓库,需要运行如下命令:
默认的情况下远程仓库的别名就叫origin
注意: 第一次推送分支需要带-u 参数,此后可以直接使用git push推送代码到远程分支
查看远程仓库中所有的分支列表
git remote show 远程仓库名称
跟踪分支
从远程仓库中,把对应的远程分支下载到本地仓库,保持本地分支和远程分支名称相同
git checkout 远程分支的名称
从远程仓库中,把对应的远程分支下载到本地仓库,并把下载的本地分支进行重命名
git checkout -b 本地分支名称 远程仓库名称/远程分支名称
拉取远程分支的最新的代码
git pull 把远程分支最新的代码下载到本地对应的分支中
删除远程分支
git push 远程仓库名称 --delete 远程分支名称
git branch -D 分支名称 强制删除本地分支
总结:
需求:经理让你为你之前的登陆模块添加一个新的功能:验证码登陆,你预计时间一天,同时你希望也能进行版本管事,所以你准备开一个分支来完成这个业务
- 1.查看当前的分支,我不能让我新创建的分支重名:git branch
- 2.我准备创建一个名称为login的分支: git branch login,再通过git branch验证分支是否创建成功(创建的分支代码和主分支master代码默认完全一样)
- 3.我开始要切换到login分支搞搞事情了:git checkout login,然后验证一下是否切换成功
- 4.我就在login分支上认真的进行代码的业务开发。。。。。。。。同时按常规的方式进行add 和 commit
- 5.切换到master分支,发现刚刚的login上的代码没有,所以我们需要将login分支上的代码合并到master分支: git merge login
- 6.现在login已经完成它的使命了,所以可以将login分支删除: git branch -d login
- 7.验证一下是否删除了:git branch