上一篇讲到Git的分支管理实操,在线合并和本地合并都进行了实操。毕竟:光说不练是假把式。而只练不整理,只能是傻把式了。分支管理到底如何进行管理呢?
先以GitLab上的一张经典的图打头,作为一个总体概览,也方便理解分支的管理和走向:

现假设公司有名为Hogwarts_Online2的开发项目,其中包含了上线分支master,开发分支develop,测试分支release,和个人开发的特性分支

1.1)与远程仓库建立连接,在本地创建自己的分支,并拉取develop分支的文件:

1.2)在当前分支中创建新的文件gitflowDemo.txt,输入内容“study git”;然后add,commit

#修改分支
vi gitflowDemo.txt
#提交修改
git add gitflowDemo.txt
git commit -m "add demo"

1.3) 通过git pull命令检查远程develop分支是否和当前分支有冲突:

$ git pull origin develop
From ssh://47.95.238.18:10022/root/hogwarts_online2* branch            develop    -> FETCH_HEAD
Already up to date.

注: push之前先拉去远程代码,以防在开发过程中,远程被别人更新过新版本代码。如有代码冲突,两人协商冲突解决办法。多人开发的时候,冲突是不可避免的。

1.4) git push将修改推至远程特性分支origin gitflowDemo:

1080×444 58.8 KB

1.5) 在GitLab上进行merge request,并在develop分支上进行merge:
如果想要撤回这次merge可用git merge --abort

create merge request:

1080×146 26.9 KB

选择develop分支:

964×872 53.3 KB

没有冲突,可直接merge:

最终我们可以看到成功merge进develop分支中:

991×684 54.6 KB

我们还可以在graph中查看分支的走向:

1080×278 44.1 KB

修改gitflowDemo.txt文件为

study git
update

add,commit,push

git add gitflowDemo.txt
git commit -m "update gitflowDemo.txt"
git push -u origin gitflowDemo

切换到本地develop分支,pull最新代码,merge本地gitflowDemo分支代码,push进远程develop分支

git checkout develop
git pull origin develop
git merge gitflowDemo
git push -u origin develop

这个是在GitLab上检查更新情况:

develop分支变动频繁,master分支属于上限版本,因此需要一个内测的分支版本,这个就是release分支了
具体的提交操作根据权限范围,和1中develop的操作一致。

有的时候出现的非常紧急的bug,需要立即修改上线,来不及在各个分支上进行merge测试了;这个就是就需要用hotfixes模式,建立一个bugfix分支,直接绕开其他分支,修改合并到master中。
3.1) 建立bugfix分支,并修改文件push到远程分支:

git checkout master
git checkout -b bug_02fixvi bugfix02.txt
fix bug02git commit -a -m "bug_01 fix"
git push -u origin bug_01fixgit add bugfix02.txt
git commit -m "fix bug02"
git push origin bug_02fix

3.2) 这个时候检查GitLab,会发现多了一条从master分支拉出来的修改bug02的分支:

3.3)最后由最终的master权限拥有者来进行合并。

3.4)修改了bug直接上线master后,很有可能让master分支的修改已经领先其他分支了;这个时候就需要将其他分支更新,对master分支进行合并;同时将bugfix分支删除,尽量保证分支的整洁度。

git log --graph --all --decorate=short
git grep "pattern"  $(git rev-list --all)
git log f13297
git checkout feature
git rebase master

与merge后的分支走向对比:

git checkout feature
git merge master
#或者写在一行
git merge feature master

此外,rebase还可以对提交的历史进行修改(不常用也不建议使用)

git rebase -i HEAD~2

注意: rebase的使用规则
1、不要在公用的分支上执行rebase
2、主要的分支进行保护

git diff
git diff HEAD~3
git diff master develop

常见diff工具:

  • diff ——仅展示某一行的增加(+)或减少(-)
  • vimdiff ——比diff看起来要更直接
  • IDE ——强大的工具,展示清晰,使用方便
vimdiff bugfix01.txt bugfix02.txt

1080×46 3.13 KB

参考链接:

git的基本使用流程:

Atlassian

Setting up a repository | Atlassian Git Tutorial

Set up a git repository: git init creates a new repo, git clone copies an existing repo, git config configures your Git installation from the command line

特性分支工作流:

Atlassian

Git Feature Branch Workflow | Atlassian Git Tutorial

Learn if this Git branching model is right for you and your team with this deep dive into the Git Feature Branch Workflow.

gitlab工作流:
https://docs.gitlab.com/ee/workflow/gitlab_flow.html
多种工作流对比:

Atlassian

Git Workflow | Atlassian Git Tutorial

A brief introduction to common Git workflows including the Centralized Workflow, Feature Branch Workflow, Gitflow Workflow, and Forking Workflow.

gitlab私服搭建:

docs.gitlab.com

GitLab Docker images | GitLab

Documentation for GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab, and GitLab Runner.

AUTHOR

月关,霍格沃兹测试学院优秀学员。一个在质量保障领域攀登探索的tester,致力于用技术改变身边人对测试的认识。对Web,接口和APP 自动化均有所涉及。

原文链接

获取更多相关资料请点击链接或者添加vx :ceshiren001

Git实战(五)| 让工作更高效,Git的分支管理相关推荐

  1. 新一代三维GIS技术助力灭火救援工作更高效、更标准、更科学

    2009年,SuperMap发布了首款二三维一体化GIS软件,并首次提出了二三维一体化GIS技术.随后,二三维一体化的应用系统不断涌现,二三维一体化技术逐步成为三维GIS发展和研究的主流.2017年, ...

  2. 钉钉邮箱登录入口_清博舆情钉钉小程序上线 ,五大优势三大亮点助力工作更高效...

    清博大数据在多项赛事与微软.Google.阿里.百度等团队同台竞技并获得:第28届中国计算语言大会CCL2019中文幽默比赛冠军:互联网虚假新闻检测2019全球挑战赛多模态识别技术冠军:2020年&q ...

  3. 图解研发效能:让过程被看见,让工作更高效

    前面我的同事分别从需求协作.代码协同和应用发布三方面,和我们分享了如何通过云效完成日常的产品研发.当我们的工作活动都在云效上时,这便就有了度量的数据基础. 在很多文章中我们看到的是,效能洞察主要是帮助 ...

  4. git 提交命令_工作总结:Git的学习和使用,最详细的Git教程,从入门到精通

    前言 Git简介 实用主义 深入探索 总结 参考资料 前言 Git 是程序员学习和工作都离不开发工具,今天和大家分享 Git 常用命令总结. Git简介 Git 是一种分布式版本控制系统,它可以不受网 ...

  5. 樊登高效休息法心得400字_从3个方面入手,让运营工作更高效!

    (本文转载自姑婆那些事儿APP) 做运营的似乎都有一个很深的体会:每天的工作时间很多,但是产出却很低.或者,早上计划好的事情,到了晚上下班却还没有完成,不得不通过加班来完成工作内容. 这实际都在指出一 ...

  6. 神器集合!这12个免费工具可以让您的工作更高效

    好的工具,能够帮助我们更高效地完成工作,节省时间和精力; 节省出更多的摸鱼时间! 本文将介绍 12 款绝佳的免费效率工具,这些工具可以让你事半功倍,提高工作效率.无论你是一名程序员.设计师.学生还是白 ...

  7. 软件系统维护是一项不吸引人的工作_工作流程管理系统六大特点,助您工作更高效...

    什么是工作流程管理系统? 工作流程管理是一种处理任务顺序和功能的方法,工作流程管理系统就是指按照在计算机中预先定义好的工作流逻辑推进实际工作执行的软件系统. 好用的工作流程管理系统可以给企业带来很多价 ...

  8. 有数字化肢体语言的线索评分:让工作更高效

    线索评分是增加转化率的诀窍:如果你希望确保销售线索按时保质的交付给你的销售团队则需要规范交接条件, 我们将此称之为自动化的质量保证. 高分值表示你的潜在客户非常感兴趣并有意购买,低分则相反,就这么简单 ...

  9. Git实战技巧-日常工作总结

    1.开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支 --1.更新本地master代码 git checkout master git pull--2.更新本地dev代码 gi ...

最新文章

  1. Mybatis之批量更新操作
  2. 皮一皮:大家对自己的定位都挺准的...
  3. 【转】在Eclipse下搭建Android开发环境教程
  4. scala中_下划线的使用
  5. 合并两个有序数组Python解法
  6. (NFS)mount.nfs: access denied by server while mounting localhost:/home/xuwq/minilinux/system
  7. pytest自动化6:pytest.mark.parametrize装饰器--测试用例参数化
  8. HIMSS宣布 Healthcare IT News和MobiHealth News的国际扩张
  9. Win7系统怎么强制格式化U盘
  10. ceshi wenz
  11. 一文了解成分句法分析
  12. mac ps安装 服务器无响应,Mac程序无响应?六个方法教你如何退出无响应的程序...
  13. arm板配置ssh服务
  14. 2022快手春节跳一跳红包到 怎么获得66元红包?
  15. 安卓使用usb连接外设
  16. 微信公众平台 html,微信公众平台.html
  17. docker之卷10
  18. Mac conda 使用
  19. PHP获取项目根目录
  20. 【TensorFlow2.0】如何搭建网络模型?

热门文章

  1. Inno Setup打包实现安装自启和开机自启
  2. 2013年将成为传统店铺的末日?
  3. 编译alsa相关库,在android4.1下应用。
  4. Linux系统man命令显示中文
  5. hdu 多校赛 第三场
  6. Nvidia TX2爬坑过程——1、入手刷机教程
  7. 排队打水问题(water)
  8. tp框架使用easywechat二次开发微信创建菜单失败
  9. 蚁狮优化算法( Ant Lion Optimizer,ALO)-Matlab源码
  10. Burp Suite使用介绍(二)