Git高级开发:使用分支进行项目开发

2021年3月8日16:35:47 发表评论 798 次浏览

本文概述

Git分支概念介绍

Git分支解释

在讨论Git分支前,可以看下我之前写的两篇关于Git的文章。我们可以知道Git的工作其实就相当于对文件进行备份/快照,每个快照或版本是一个节点,多个节点组成一个版本仓库,一个复杂的版本仓库相当于一个有向图。

从一个版本节点开始有不同的生长路径,那么就产生了分支。在Git中区分一个分支非常简单,git项目默认主分支为master,master分支默认指向最新的提交;若在master分支上创建一个新分支test,那么test同样指向这个最新的版本节点;其它分支dev也是指向当前分支的最新提交点,而HEAD指针指向当前工作的分支上。

所以git分支的操作也不是很难,这就像操作链表一样,分支的主要操作也就是:

  • 创建分支
  • 切换分支
  • 合并分支
  • 删除分支

Git分支基本操作和分支管理

1、创建分支

创建分支使用命令git branch <bname>,该命令创建一个新分支并指向当前分支的最新提交点,对于这个新创建的分支指向哪里,你可以使用git log –oneline查看:

Git创建分支并查看

如上图,你可以看到新建的iss100分支指向cba583a这个提交,和master指向的是同一个提交,而HEAD指针指向master。

2、切换分支

切换分支使用命令git checkout <bname>,创建并切换到新分支使用命令git checkout -b <bname>。切换分支的时候,git会做两个工作:

  • 将原分支中的文件复制一遍到新分支;
  • 将HEAD指针指向新分支上。

下面我们可以输入命令验证一下:

Git切换分支并查看

3、合并分支

在新分支上,通常做的工作是实现一个子主题、子功能、模块或修复一个错误,一般是完成后将其合并到主分支上。这里我们假设要在新项目的基础上修复一个问题iss100:

Git合并分支

这里的合并比较简单,使用git log查看并没有看到明显的其它分支,这是因为新建分支创建的提交只是比master上的版本多1,那么git在合并的时候会直接将master分支移到和iss100指向的提交点上(也就是快进,fast-forward)。

另一种合并是使用git rebase合并,这是一种重新组合的合并,形式上它会把另一条路径摧毁了,但是用哪个还是看个人选择。

4、删除分支

Git branch -d <bname>删除一个分支,-D选项用于强制删除分支。

5、分支合并冲突

如果同一个文件在开发的时候,有多个开发者同时修改了,那么在合并的时候会发生冲突。但是不要紧,你照常合并就行了,遇到冲突的时候Git会提醒你,你只要根据Git的提示做就行了:找到冲突的文件,自定义修改好,然后使用git add/commit提交即可。

分支开发工作流

当你使用正式使用git进行项目开发的时候,Git的官方建议是你最好规划好一个分支开发工作流,而不总是在master分支上进行开发。

这里介绍一个git分支开发工作流的例子:Gitflow工作流,但是使用什么工作流并不是必定的,你可以根据一些流行的工作流制定自己的工作流,这里介绍本人喜欢的工作流。

Gitflow工作流
  • Master分支:长期稳定分支,只允许release分支和hotfix热修复分支,一般不允许直接往master分支提交代码,而是请求该分支进行合并。
  • Develop开发稳定分支,用于日常的开发,主要是代码优化和功能性开发。
  • Feature分支也就是特性分支负责功能开发,功能完成时合并回Develop分支。
  • Hotfix分支用于紧急修复上线版本,修复好打tag合并会master分支。
  • release分支从develop分支拉取,用于回归测试,完成后打tag并合入master和develop。

基于这个工作流,如果是非常少人或者个人的开发,我认为只需要master和feature分支即可,其它为一些问题修复分支。另外,为了习惯标准的Git开发,建议还是至少使用master、develop和feature分支,虽然有点复杂,但用多了就习惯了,也能更好适应多人的项目开发。

远程分支

远程分支的常见命名方式为<remote>/<branch>,如origin/master,要注意本地的master和远程的origin/master分支不是同一个分支,当你在本地master分支提交一些版本时,远程分支并不会向前移动,你需要手动合并才行。

总结

好了,关于使用Git分支进行项目开发的内容就到这里了,对于Git的更多内容建议到Git官网找到一个中文的参考文档,里面有更多的介绍。而使用Git进行日常项目开发,我觉得理解好文档的前三节就够了,其它则是一些更为深入的内容,除非你的工作多数都是关于Git或版本管理系统的,否则我们并没有必要完全花过多时间去研究Git,更多的时间应该是花在项目代码上,即使还有不懂的,以后遇到问题也会逐渐增加使用Git的经验。

Git命令不记得可以到官网文档或百度谷歌查一下,理解Git版本仓库的操作原理用起来才会更顺利吧。

下一篇文章介绍IDEA中Git的实际用法示例,先睡觉了,祝大家工作顺利!

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: