git分支管理

git分支管理

1.主分支: Master

     主分支,默认不会在该分支上进行开发,只会将稳定没有bug的代码合并到该分支上

2.开发分支 :Develop

​      主要的开发分支。在master分支的基础上创建而来,该分支主要是保持最新的代码,用于测试、提交新功能。在开发完新功能并且没有bug之后,应切换到master分支合并develop分支的代码。合并命令应该为

git merge --no-ff develop 

     原因:git merge合并两个分支时,如果顺着一个分支走下去可以到达另一个分支的话,那么 Git 在合并两者时,只会简单地把指针右移,叫做“快进”(fast-forward)不过这种情况如果删除分支,则会丢失merge分支信息。
     git merge --no-ff关闭fast-forward模式,在提交的时候,会创建一个merge的commit信息,然后合并的和master分支merge的不同行为,向后看,其实最终都会将代码合并到master分支,而区别仅仅只是分支上的简洁清晰的问题;然后向前看,也就是我们使用reset的时候,就会发现,不同的行为就带来了不同的影响
​      如果团队小只有一到两个人,并且没有公司没有分之要求,可以两人同时直接使用dev分支进行开发和修补bug,但是在冲突的处理上要保持良好的沟通,否则会出现同事把你的代码覆盖的情况,如果两个人都对git熟悉,在同一个分支开发比较方便,不用切换来切换去。另外两人都需要懂git stash命令的使用,因为在开发新功能的情况下又要去修补bug,但是又不能先提交该新功能的代码,所以要将一些代码暂存之后再去修改bug。

3.功能(feature)分支 (多人协作需要有的分支)

     功能feature分支是为了开发某种特定功能,从Develop分支上面分出来的。开发完成后,要使用git merge --no-ff 再并入Develop(原因同样是保持dev分支的git记录清晰)
     feature分支命名规范:统一用小驼峰式命名法。如果在公司里,一般分为两种:a.姓名作为统一的 feature分支命名 b.功能作为统一的 feature分支命名

创建一个功能分支:

git checkout -b feature-x develop

开发完成后,将功能分支合并到develop分支:

git checkout develop

git merge --no-ff feature-x

删除feature分支:

git branch -d feature-x
4.修补bug分支(软件发布后必须有,软件发布前可以没有)

​       a.软件正式发布以后,难免会出现bug。这时就需要创建一个分支,进行bug修补。

修补bug分支是从Master分支上面分出来的。修补结束以后,再合并进Master和Develop分支。它的命名,可以采用fixbug-*的形式

创建一个修补bug分支:

git checkout -b fixbug-0.1 master

修补结束后,合并到master分支:

  git checkout master

  git merge --no-ff fixbug-0.1
   #对合并生成的新节点,做一个标签
  git tag -a 0.1.1

再合并到develop分支:

  git checkout develop

  git merge --no-ff fixbug-0.1

最后,删除"修补bug分支":

  git branch -d fixbug-0.1

​      b.软件发布之前,master分支显得就不是这么重要,一般开发测试都在dev分支,那么就可以直接在dev分支上修改bug,修改以后合并到master分支上(软件发布前master分支的作用并没有很大,所以不需要专门建个分支来修复)

5.预发布分支(release分支,可有,可没有)

​      预发布分支,它是指发布正式版本之前(即合并到Master分支之前),我们可能需要有一个预发布的版本进行测试。

​      预发布分支是从Develop分支上面分出来的,预发布结束以后,必须合并进Develop和Master分支。它的命名,可以采用release-*的形式。

创建一个预发布分支:

  git checkout -b release-1.2 develop

确认没有问题后,合并到master分支:

  git checkout master

  git merge --no-ff release-1.2

  # 对合并生成的新节点,做一个标签
  git tag -a 1.2

再合并到develop分支:

  git checkout develop

  git merge --no-ff release-1.2

最后,删除预发布分支:

  git branch -d release-1.2
六.其他git知识点
a.git分支命名规范:

​      分支名称 统一用 小驼峰式命名法,禁止出现任何符号或数字。之前项目中用了大驼峰,导致了gitlab的CI/CD出现了问题

b.git分支合并出现代码丢失的问题:

​      原因是:比如我们在dev分支开发,然后又新建了一个功能分支image-search,由小明和小黄去开发图片搜索的功能,在开发image-search的时候,小明接到新的任务,同时要去开发一个视频门禁的功能。小明则直接基于image-search这个分支新建了一个video-control分支,此时image-search分支和video-control分支同时在commit和push,然后小明开发完了视频门禁分支上的代码,就直接合并回了dev分支。此时就会导致image-search分支代码的丢失。原因是video-control分支是由image-search分支创建出来的,只记录了创建时image-search分支之前的git记录,而后面小黄在image-search分支上做的提交和推送并不会被video-control所记录。于是如果直接合并到dev分支,那么image-search分支在创建后的提交和推送也不会被dev所记录。

解决:

​      第一种解决办法:小明在一开始不应该直接基于image-search分支来新建video-control分支,应该基于dev分支来新建video-control分支开发新功能,然后再合并回dev分支。

​      第二种解决办法:小明只能基于image-search分支来新建video-control分支的话,那么在开发完了之后,应该合并回image-search分支,然后再合并到dev分支。

c.常见git合并丢失代码的场景:基于某个分支创建的新分支,合并到了一个另外的分支。

​      比如基于feature1分支创建的新分支feature2分支,开完完了,将feature2分支直接合并到dev分支。

最好的做法就是:基于哪个分支创建出来的新分支,就合并回该分支。

参考网址:https://www.ruanyifeng.com/blog/2012/07/git.html(阮一峰)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值