大厂的第一堂课,完整的git流程

前言

大厂有着数量庞大的代码库以及复杂的权限验证体系,囊括着开发、测试、上线的完整流程。因此必然会有一套代码仓库的管理流程,而不再是个人的代码随意开发、随意提交。这也是我从小厂出来学习到的第一堂课——完整的git提交流程。下面我们以一位头条大佬的仓库为例,讲解如何对线上仓库进行开发

fork仓库

Interview-Book 这是头条大佬的仓库,我们可以看到他的分支信息

git-1.png

我们可以看到有三个分支。假定这是一个发布到生产环境的应用,master一般用来存放线上分支,即这个仓库存放的是线上正在运行的代码,另外的仓库便是开发分支,一般会把开发分支设置为默认仓库,避免误提交代码线上(线上一般会禁止提交),我们先fork一个到自己的仓库

本地开发

git-2.png

接着我们就可以clone仓库到本地

git-3.png

拉取到本地后注意 VSC 右下角的分支,github默认是master分支,要手动切换到开发分支,并在remote中添加线上仓库

git remote add upstream https://github.com/Mountain-Buzhou/Interview-Book

远程仓库是头条大佬的仓库,并且一般自己的github仓库命名为origin 线上仓库命名为upstream。这个时候我们就有了三个仓库,分别是:

  1. 线上仓库(发布项目的git仓库,一般是拥有者是团队或TL)
  2. 自己仓库(自己fork线上仓库到自己的github)
  3. vscode本地仓库(git还在本地有一个仓库)

到目前为止,我们还不能直接进行开发,而需要从这个dev仓库(在这里是version_alpha)切出一个分支

git checkout -b feat/add-artical

命名为feat:xxx, 即新添加的需求

git-4.png

我们切换了一个新的分支,在这个新的分支上添加一些修改

git-5.png

我把以前写的一篇二叉树相关的文章添加到头条大佬Book中,接着进行commit, commit的内容也应该遵守规范,一般来说是

  1. fix:xx 表示修改了XX代码
  2. feat:xx 新增了XX需求
  3. style:xx 修改了部分的样式
  4. delete:xx 删除了某些无用的部分

标题最好能简短的描述出这个commit干了些什么,具体内容可以在comment中详细写

提交PR

git-6.png

feat感觉命名错了,因此改成了add:增加二叉树相关内容

git-7.png

在合并之前我们需要做codereview, 在我们小组所有进行合并的代码必须要进行codereview并且每一个组员都可以参加,codereview是让自己进行提升以及帮助别人纠错的一个重要途径。通过看别人的代码,可以了解到不同的思维。点击 Files changed查看这次更改的代码

git-8.png

在代码的行数处,鼠标移到上面就会出现一个 + 号,点击便可以出现一个浮动的 comment 框,我们就可以针对这行代码进行提问

合并PR

确认无误后,我们便可以等待头条大佬合并PR到dev(这里是version_alpha)分支,头条大佬合并以后我们就可以在本地仓库 切换到自己的 远程分支 origin/dev 拉取 upstream/dev到本地,然后再推送到 origin/dev 这样就完成了一次完整的 PR

hotfix

有些时候产品会要求紧急上线一个需求,这个时候需要在线上的代码更新,因此我们会从线上分支切一个分支到自己仓库,然后在这个分支上进行修改,修改完以后会提两个PR命名为:hotfix:xxx 到dev仓库和master仓库

完整的流程

git-9.png

性感面试官,在线内推

今日头条 likun.liyuk@bytedance.com

饿了么 mingjun.wu@ele.me

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序你好

微服务通信中的设计模式

我在上一篇文章中,我谈到了微服务中涉及到的设计模式。现在,我想深更深入介绍微服务架构中最重要的设计模式:微服务之间的数据通讯。当我们用于开发独立应用程序时通讯是...

2212
来自专栏Java帮帮-微信公众号-技术文章全总结

【大牛经验】搜狗商业平台Java技术实践

搜狗商业平台Java技术实践 Java自1995年问世以来,已历经20多年岁月。20年来,IT技术风起云涌,Java始终以其可移植性、跨平台性、生态系统完备性等...

42910
来自专栏架构师之路

数据库软件架构设计些什么

缘起:受@萧田国 萧总邀请,上周五晚上在“高效运维1号群”内分享了《58同城数据库软件架构设计与实践》(这个topic今年在数据库大会上分享过),应组织方要求,...

36911
来自专栏逸鹏说道

大公司都有哪些开源项目之新浪

新浪:WeiBo https://github.com/weibocom 1.分布式缓存服务器 memcachedb memcachedb是 一个由新浪网的开发...

37010
来自专栏IT大咖说

饿了么API Everything解决了前后端开发之间的所有问题?

简单来说就是后端服务通过API的形式对外暴露,作为前端访问后端的中间层。API Everything会将SOA服务接口适配给外部各端进行访问。

2302
来自专栏JAVA高级架构

大型网站技术架构

早期的网站为了节省成本一般会设计成集中式系统,应用程序、数据库等都部署在一台服务器上。 但随着业务的快速度发展,逐渐出现瓶颈,按一定原则**(应用拆分、服务拆分...

3766
来自专栏后端技术探索

新浪微博平台服务部署及Web框架

平台作为整个微博架构的基础功能服务层,对外以Http接口的方式提供服务。接口遵守RESTful规范。接口示例如下:

1682
来自专栏FreeBuf

开源Webshell利用工具——Altman

Altman,the webshell tool,自己写的一款开源软件。 0×00前言 之前用过几款webshell工具,有B/C的也有C/S的,有的只能用于p...

32710
来自专栏喵了个咪的博客空间

phalapi-进阶篇1(Api,Domain,和Model)

#phalapi-进阶篇1(Api,Domain,和Model)# ? ##前言## 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个...

3707
来自专栏流柯技术学院

Droid@screen:在PC屏幕上显示Android手机屏幕

这里介绍一款工具——Droid@screen,用来获取手机屏幕,显示在PC屏幕上。它集截图、录像等多种功能于一体。

1641

扫码关注云+社区

领取腾讯云代金券