第一天上班idea_git怎么拉项目,入职第一天git拉取项目?

Git现在已经是软件行业的基础必备工具了,面试官一问git,不知道那是什么,就有点掉分咯。网上铺天盖地都是git的使用教程,但是该怎么用于项目及如何规划使用,似乎又很少提及了(可能我看的少,见谅),今天我们就来探讨下git如何应用于项目中,着重说明下git子模块的使用方法。

一般情况下,轻度开发的同学都是git clone一下源码仓库,咦还有子模块,这什么鬼?搜下命令“git submodule …”、“ git pull …”一顿操作猛如虎,轻松搞定。突然老板要让你创建一个原始项目,还要用上公司的积累代码库,还要一并纳入项目和代码管理,本来是个表现的机会,结果两眼一黑蒙了,那么我们就来浅谈下git的项目应用。

首先,在嵌入式软件开发过程中,公司会有很多代码积累,同时也存在多人协作开发(当然你说我们公司就一人开发,我从头写到尾,那么确实可以不用管那么多),现在的嵌入式开发也注重架构搭建以及框架的使用,这样就对代码的框架构建以及版本的管理有很高的要求。

还是举个例子,公司要求做两个项目(只考虑软件):一,用一个MCU驱动摄像头拍照,侦测到有人的时候,保存图片然后通过wifi模块上传照片到云平台;二,用一个MCU驱动摄像头拍照,侦测到有人时,播报一段欢迎语;公司有摄像头驱动,图像识别算法等,但是都不能直接使用,要趁这次项目来完善,同时所有代码都要纳入版本管理。老板让你负责,同时派给你2个同事(张三、李四)一起开发,周期1个月。这时你会怎么做?当然在高手眼里这都不是事,一个人几天搞定所有,其他同事都去摸鱼去吧,我最棒,嘿嘿。

我先阐述下我的设想,并用git做代码管理。首先应用场景,需求分析,可行性分析什么的就先简略了。先概要设计下,软件部分主要包括摄像头驱动、wifi模块驱动、语音模块驱动、图像识别算法、项目1业务实现、项目2业务实现。这里我们采用分层、模块化的设计方式,每一个驱动、功能、实现可以看做一个独立模块,同时预先定好各模块的API接口,之后大家协同开发。

分工如下:

我:开发图像识别算法、摄像头驱动

张三:开发wifi模块驱动、项目1业务实现

李四:开发语音模块驱动、项目2业务实现

这里用的是gitee做的演示,当然有的公司用gitlab或github的也一样,只做一个简单的说明。

首先建立两个组织“资源仓库”、“项目产品”。“资源仓库”放公用的模块,“项目产品”放具体的项目产品

第一天上班idea_git怎么拉项目,入职第一天git拉取项目?

为了公用的模块便于复用和管理,我们建立一个资源仓库的组织,然后把可以复用的模块都建成一个独立的仓库,其中的仓库可以对团队所有人开放,也可以根据需求确定权限。

第一天上班idea_git怎么拉项目,入职第一天git拉取项目?

再给两个项目建立仓库,放在项目产品组织中,这里项目只需对专人开放就行,比如张三参与项目1,李四参与项目2。

第一天上班idea_git怎么拉项目,入职第一天git拉取项目?

首先在本地构建项目,先clone项目1,此时项目1是空的,有个README.md文档而已

第一天上班idea_git怎么拉项目,入职第一天git拉取项目?

复制链接地址,本地clone如下

git clone https://gitee.com/project-products/item-1.git
第一天上班idea_git怎么拉项目,入职第一天git拉取项目?

本地就有了项目1的文件夹

第一天上班idea_git怎么拉项目,入职第一天git拉取项目?

项目1用到“A型摄像头驱动”、“图像识别算法”,“W型wifi模块驱动”我们把它们做为子模块关联进来

首先是“A型摄像头驱动”

第一天上班idea_git怎么拉项目,入职第一天git拉取项目?

在项目1文件夹下添加子模块

git submodule add https://gitee.com/resource-warehouse/type-a-camera-driver.git
第一天上班idea_git怎么拉项目,入职第一天git拉取项目?

此时多了一个“type-a-camera-driver”文件夹,这个就是“A型摄像头驱动”,其中已经有了程序

第一天上班idea_git怎么拉项目,入职第一天git拉取项目?

用指令查看下状态

git status

多了两个文件,其中子模块的详细内容使用git单独管理的

第一天上班idea_git怎么拉项目,入职第一天git拉取项目?

这时用命令提交并推送到远程仓库

git commit -am"%HEAD 添加子模块"
git push origin master
第一天上班idea_git怎么拉项目,入职第一天git拉取项目?

此时再看下远程仓库上的内容,就已经更新了,已经包含了子仓库

第一天上班idea_git怎么拉项目,入职第一天git拉取项目?

点击红色圈内的文件名,就可以直接跳转到子仓库了

这是以命令行的方式添加的子仓库,在gitee上也可以网页端直接添加

点击“文件”中的“新建子模块”

第一天上班idea_git怎么拉项目,入职第一天git拉取项目?

写入文件夹名及仓库地址及提交的哈希值,确定即可

第一天上班idea_git怎么拉项目,入职第一天git拉取项目?

此时项目1仓库的内容如下

第一天上班idea_git怎么拉项目,入职第一天git拉取项目?

多了wifi的驱动

第一天上班idea_git怎么拉项目,入职第一天git拉取项目?

然后继续把算法模块也添加进来,最终如下图所示:

第一天上班idea_git怎么拉项目,入职第一天git拉取项目?

这样就可以在项目1里开发业务了,驱动、算法也可以独立开发了。项目2的建立方式也是一样。

这样我、张三、李四就可以协同并行开发了,同时把所有的源码都纳入了版本管理,把复用的模块作为资源储备起来,以便往后的项目快速应用开发。

当然要做到真正的协同开发,模块的复用,像编程规范,API接口规范、版本迭代规范等基础工作是必不可少,任重而道远,这里只是以一个简单的示例阐释git的项目应用方法。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 sumchina520@foxmail.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.sumedu.com/faq/274792.html