简介
在版本回退中,代码仓库被串成了一条时间线,这条线被称作为主分支(master)。我们也可以创建其他分支,以实现同步开发。git分支通过指针的形式管理,所以创建、合并、删除等都很快。通过分支管理,我们可以更高效地完成开发工作。
分支管理的相关命令
- 查看分支:git branch
- 创建分支:git branch [name]
- 切换分支:git checkout [name]
- 创建+切换分支:git checkout -b [name]
- 合并某分支到当前分支:git merge [name]
- 删除分支:git branch -d [name]
解决冲突
多个分支可以并行开发,提高效率,但是也会带来冲突的问题。当两个分支中的同名文件都有改动时且改动不一致时,进行合并就会报冲突,需要手动将冲突文件内容进行调整来解决冲突。
分支管理策略
在实际开发中,master分支应该是非常稳定的,所以仅仅用来发布新版本。一般会根据master建立一个dev分支,开发人员根据dev分支上进行开发,开发完毕后合并到master上进行发布。如下图所示:
Bug分支与feature分支
bug分支:当需要修复某个分支的bug时,我们会基于该分支创建一个bug分支,修复完毕后再合并。当需要解决bug时我们恰好正在开发其它功能,可以使用git stash暂存当前工作,再创建bug分支。修复完bug之后,可以使用git stash pop命令进行恢复,继续开发工作。
feature分支:同理,当我们想要开发一个带有实验性质的新功能时,也会先建一个feature分支,然后将其合并至dev分支之上。
多人协作
当我们从远程仓库克隆时,git自动将本地master分支和远程master分支对应了起来,并且将远程仓库名设置为了orign。多人协作时,会涉及到对不同分支的操作。
一般的多人协作过程如下:
- 首先,可以试图用git push origin branch-name推送自己的修改;
- 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
- 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再用git push origin branch-name推送;
- 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch –set-upstream branch-name origin/branch-name。