百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 博客教程 > 正文

Git——git的项目应用方法 git运行项目

connygpt 2024-10-19 03:59 10 浏览

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的也一样,只做一个简单的说明。

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


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

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


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

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

git clone https://gitee.com/project-products/item-1.git

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

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

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

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

git submodule add https://gitee.com/resource-warehouse/type-a-camera-driver.git

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

用指令查看下状态

git status

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

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

git commit -am"%HEAD 添加子模块"
git push origin master

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

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

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

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

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

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

多了wifi的驱动

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

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

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

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

相关推荐

3分钟让你的项目支持AI问答模块,完全开源!

hello,大家好,我是徐小夕。之前和大家分享了很多可视化,零代码和前端工程化的最佳实践,今天继续分享一下最近开源的Next-Admin的最新更新。最近对这个项目做了一些优化,并集成了大家比较关注...

干货|程序员的副业挂,12个平台分享

1、D2adminD2Admin是一个完全开源免费的企业中后台产品前端集成方案,使用最新的前端技术栈,小于60kb的本地首屏js加载,已经做好大部分项目前期准备工作,并且带有大量示例代码,助...

Github标星超200K,这10个可视化面板你知道几个

在Github上有很多开源免费的后台控制面板可以选择,但是哪些才是最好、最受欢迎的可视化控制面板呢?今天就和大家推荐Github上10个好看又流行的可视化面板:1.AdminLTEAdminLTE是...

开箱即用的炫酷中后台前端开源框架第二篇

#头条创作挑战赛#1、SoybeanAdmin(1)介绍:SoybeanAdmin是一个基于Vue3、Vite3、TypeScript、NaiveUI、Pinia和UnoCSS的清新优...

搭建React+AntDeign的开发环境和框架

搭建React+AntDeign的开发环境和框架随着前端技术的不断发展,React和AntDesign已经成为越来越多Web应用程序的首选开发框架。React是一个用于构建用户界面的JavaScrip...

基于.NET 5实现的开源通用权限管理平台

??大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!??今天小编推荐一款基于.NE...

StreamPark - 大数据流计算引擎

使用Docker完成StreamPark的部署??1.基于h2和docker-compose进行StreamPark部署wgethttps://raw.githubusercontent.com/a...

教你使用UmiJS框架开发React

1、什么是Umi.js?umi,中文可发音为乌米,是一个可插拔的企业级react应用框架。你可以将它简单地理解为一个专注性能的类next.js前端框架,并通过约定、自动生成和解析代码等方式来辅助...

简单在线流程图工具在用例设计中的运用

敏捷模式下,测试团队的用例逐渐简化以适应快速的发版节奏,大家很早就开始运用思维导图工具比如xmind来编写测试方法、测试点。如今不少已经不少利用开源的思维导图组件(如百度脑图...)来构建测试测试...

【开源分享】神奇的大数据实时平台框架,让Flink&Spark开发更简单

这是一个神奇的框架,让Flink|Spark开发更简单,一站式大数据实时平台!他就是StreamX!什么是StreamX大数据技术如今发展的如火如荼,已经呈现百花齐放欣欣向荣的景象,实时处理流域...

聊聊规则引擎的调研及实现全过程

摘要本期主要以规则引擎业务实现为例,陈述在陌生业务前如何进行业务深入、调研、技术选型、设计及实现全过程分析,如果你对规则引擎不感冒、也可以从中了解一些抽象实现过程。诉求从硬件采集到的数据提供的形式多种...

【开源推荐】Diboot 2.0.5 发布,自动化开发助理

一、前言Diboot2.0.5版本已于近日发布,在此次发布中,我们新增了file-starter组件,完善了iam-starter组件,对core核心进行了相关优化,让devtools也支持对IAM...

微软推出Copilot Actions,使用人工智能自动执行重复性任务

IT之家11月19日消息,微软在今天举办的Ignite大会上宣布了一系列新功能,旨在进一步提升Microsoft365Copilot的智能化水平。其中最引人注目的是Copilot...

Electron 使用Selenium和WebDriver

本节我们来学习如何在Electron下使用Selenium和WebDriver。SeleniumSelenium是ThoughtWorks提供的一个强大的基于浏览器的开源自动化测试工具...

Quick 'n Easy Web Builder 11.1.0设计和构建功能齐全的网页的工具

一个实用而有效的应用程序,能够让您轻松构建、创建和设计个人的HTML网站。Quick'nEasyWebBuilder是一款全面且轻巧的软件,为用户提供了一种简单的方式来创建、编辑...