前面已经讲了大概的最常用的git命令了,如果公司使用的是单分支开发,只有一个master分支,那可以说之前所说的能解决80%的问题了,这篇文章主要讲的就是多分支情况下的分支管理。
如果说正式版本需要用,但是又想不破坏正式版本进行开发,这时候分支就十分重要了。我们可以在分支上开发新的功能,然后再合并到主分支上,整个过程在合并之前对主分支来说是透明的。
需要明确一点,在自己本地创建分支的意义不大,就跟简单的复制粘贴一样,无法实现本地的A分支修改后push到远程的A分支。真正的开发中,是要把本地的分支和远程的分支做个关联。这样在本地的A分支中开发才能push到远程的A分支。
首先克隆一个自己创建的仓库,使用git branch
查看本地分支可以看到只有一个master;接着用git branch -a
查看所有分支,发现除了本地的master分支,还有远程的devleop,feature,master分支。
❝假设master是主分支,develop是开发分支,feature本来应该是特性分支,这里可以理解为补丁分支。 ❞
比如SpringBoot4.2是主分支,那么可能SpringBoot5是开发分支,也就是下个迭代。但是SpringBoot4.3新增了特性,修改了bug,就是在特性分支中开发,然后合到主分支中。
仅仅是模拟,真实情况是这样子的
回到主题,远程有3个仓库,克隆的时候只会默认克隆主仓库,但是正常多分支开发的情况下一般是「克隆全部分支或者特定分支」的。使用git branch xxx origin/xxx
来特定的分支,一般来说是推荐本地的分支名和远程的分支名是一样的,这样便于开发。
如上,使用了git branch develop origin/develop
,意思是创建了一个名为develop分支,并且把远端的develop分支克隆到本地的分支。
❝
Branch 'develop' set up to track remote branch 'develop' from 'origin'.
直译过来就是develop分支设置追踪了来自origin的develop分支,只有追踪了本地提交代码才能push到远程仓库对应的分支。 ❞
执行完命令后,本地就有了3个和远程关联的分支。
前面的*号和高亮的地方就是代表了当前分支,如上图即表示当前分支是master分支,可以使用git checkout [branchName]
来实现分支的切换。
会有提示说切换到了develop分支,并且使用git branch
命令查看也能看到当前分支。如果把这个命令和上一个命令结合起来,git checkout -b [branchName]
即为创建一个分支,并且切换到该分支下。
本地单个分支push到远程对应的分支就和正常的是一样的,无论我们在哪个分支开发,最终都是为了主分支或者发布分支服务的,需要把其他分支的内容合入到主分支中。
接下来应该是把开发分支合并到主分支中,注意,在真正开发的过程中,一般主分支都会设置为保护分支,我们是没有权限的。有可能,有可能可以直接push到公司的远程其他分支,但是「合并到主分支需要仓库管理员」 ,这里只是一个模拟,所以说直接在本地操作了。
git status
可以暂存区是没有其他东西的git merge [branchName]
「从目标分支中合并到当前分支」,本例中就是从develop分支合并内容到主分支git status
查看git状态可以看到合并后,本地的分支已经领先远程的master分支了❝不同的分支之间的合并就和之前单master开发模式中从远程本地自己的仓库merge到远程公司的仓库一样,会存在冲突,本篇文章就不再赘述。 ❞
一般来说我们是不会去删除公司的分支的。
但是可能存在着我们不想动和公司关联的分支,所以在本地创建了一个分支,相当于一个副本。在这个没有关联远程分支的分支上开发测试完成后再合并到远程的非master分支,这样就可能需要把这个分支删除。
git branch -d [branchName]
删除刚才创建的分支值得注意的一点就是,「如果在A分支下想删除A分支是不被允许的」
「创作不易,如果对你有帮助,欢迎点赞,收藏和分享啦!」
「下面是个人公众号,有兴趣的可以关注一下,说不定就是你的宝藏公众号哦!!!」