振南技术干货集:研发版本乱到“妈不认”? Git!(4)

news2024/11/20 20:20:32

注解目录

1、关于 Git

1.1Git 今生

(Git 和 Linux 的生父都是 Linus,振南给你讲讲当初关于 Git 的爱恨情愁,其背后其实是开源与闭源两左阵营的明争暗斗。)

1.2Git的爆发

(Git 超越时代的分布式思想。振南再给你讲讲旧金山三个年轻人创办 GitHub,打败Google,逆袭上位的创业故事。据说 GitHub 服务器要放到火星去? )

2、用Git代码

2.1Git化使用

(以实例来讲解代码仓库的创建、提交、分支等基础内容。)

2.2 Git 的远端使用

(以实例来讲解仓库的克隆、推送等基础内容。)

2.3代码拯救纪实

(绝不会把代码弄丢。一次有惊无险的代码追回经历,根源是对 Git 机制理解不深。)

3、用Git 管理硬件PCB

(对于硬件资源你是如何管理的? final _final _打死不改_final_1.2.zip? 还是用 Git 吧。)

3.1Git的增量

(Git 具体是如何对资源进行管理的? )

3.2 AD 中的Git

(AD 是原生支持 Git 的,让我们把它利用起来。)

3.3PCB 工程的协作开发

(团队协作中的冲突是如何产生的?如何解决冲突? )

上面振南讲解了如何使用 Git 来对软件代码进行管理。关于 Git 被最频繁问到的一个问题是:“Git 能不能用来作 PCB 资料的管理?”答案是肯定的。

我先来问广大硬件工程师们一个问题:“你们是如何管理 PCB 工程的版本的呢?”以我这么多年的经历所看到的,很多工程师和公司更在乎的是 PCB 相关资料的留存和安全(就是说有就行,顶多简单地整理一下),在版本管理上似乎并不太在意,或者说没有什么好的办法。关于硬件资料的版本,更多是依赖于工程师自身的素养。比如统一整理到某种存储介质中,可以是一块硬盘,可以是一台设置了权限的共享计算机,或者一个 NAS 服务器,也可以是一个类似于 seafile 的网盘。

对于这些资料的追溯,则要靠完整的技术文档。这样的管理方式,看似严谨,硬件资料都在公司的掌控之中,但实际上最终难免落得个版本凌乱,七零八落的下场。很多时候,你面对着众多的 PCB 版本,并不能确定哪一个是最终可用于生产的版本,因为往往并不是最新的版本就是可用的版本。

OK.那我们向硬件也引人 Git 这一版本管理利器.来看看通过它如何来管理硬件版本。

3

用Git 管理硬件PCB

Git的增量式管理


Git对于文件的管理采用的是增量式管理,如图4.42所示。


图4.42 Git的增量式文件管理

Git 在文本管理上的优势是显而易见的。但是像 PCB、Word、PDF 等这些文件,都是二进制的,不同版本的文件相同之处比较少,此时再用增量式管理,基本无异于文件拷贝。所以,用Git 管理二进制文件,会让仓库体积比较大。而且,二进制文件是没法直接合并的。不过,这些并不妨碍我们使用 Git 来进行管理。因为 Git 针对二进制或者大文件有自己的一套管理方法(比如压缩或者 LFS,大家可以去百度一下)。

我向很多硬件工程师推荐了 Git,让他们用来管理 PCB 资料的版本。但是他们反映最多的问题是:不太适应纯命令行的操作方式,那些命令总是容易忘。这让他们产生了抵触心理所以我仔细研究了 AD 对 Git 的界面化支持。

3.2 AD中的 Git


鉴于 Git 的广泛应用,很多开发环境都已经与 Git 无缝衔接,而并不需要涉及太多的命令行操作。AD(Altium Designer)作为最著名的 EDA 工具之一,自然是支持 Git 的。

1.本地化操作

振南以一个 PCB 工程为例来进行介绍,如图 4.43 所示。

首先创建一个本地仓库 git init,如图 4.44 所示。

接下来我们的操作基本上都在 AD 软件中来完成(本章的讲解基于 AD 22)。单击右键PCB 工程文件,将其添加到仓库中来,如图 4.45 所示。

接下来,我们尝试将整个 PCB 工程进行提交,如图 4.46 所示

在 Comment 中可以填入关于此次提交的一些说明,这类似于 git commit-m,如图 4.47所示

随后我们可以看到工程视图中的文件右边出现了图标,如图 4.48 所示。

这种图标的意思是“Ahead of server”,即等待推到远端仓库。这是因为刚才只进行了commit 而没有 push,等后面我们设置了远端仓库的链接,就可以执行 push 了。

我们尝试对某个文件进行修改,如图 4.49 所示。

此时这个文件右边将出现一个新的图标“Open and locally modified”,对其再一次进行提交,如图 4.50 所示。

在 AD中的这些操作,与 Git 是完全同步的,其实 AD 就是在背后调用 Git。我们可以用git log 查看一下,如图 4.51 所示。


图4.43 在工程目录下单击右键打开 GitBash


图4.44 创建一个本地仓库


图4.45 将 PCB工程文件添加到仓库之中


图4.46 将整个 PCB工程进行提交


图4.47 填写 Comment后进行提交


图4.48 提交之后 PCB工程相关文件右边出现了图标


图4.49 对某个原理图文件进行修改


图4.50 对 PCB工程再一次进行提交


图4.51 通过git log查看提交记录

2.远端操作

接下来,我们将本地仓库推到远端服务器。首先,要在远端服务器上建立一个仓库(GitHub 上创建仓库前面章节已有介绍,这里不再赘述)。使用 Git 命令行向仓库添加远端仓库的链接,如图 4.52 所示。


图4.52 通过gitremoteadd添加远端仓库链

这里我们仍然使用 HTTPS 链接,一面是方便,省了生成 SSH-key 的麻烦;另一方面是 AD的 CVS 系统目前只支持 HTTPS。随后,右键 push 即可将仓库推到 GitHub 上了。这个过程中,可能会提示输入用户名密码,输人即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1199366.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

el-table实现展开当前行时收起上一行的功能

<el-tableref"tableRef":data"tableData":expand-row-keys"expandRowKeys":row-key"handleRowKey" // 必须指定 row-keyexpand-change"handleExpandChange" // 当用户对某一行展开或者关闭的时候会触发该事件> <…

如何判断从本机上传到服务器的文件数据内容是一致的?用md5加密算法!

问题场景 最近在帮导师做横向&#xff0c;我想把整个项目环境放到服务器中&#xff0c;需要把一个很大的数据文件传到服务器&#xff0c;传上去很方便&#xff0c;但是涉及到文件的压缩上传和服务器内解压环节&#xff0c;不是太确定文件在本机和服务器的数据内容是否一致。 解…

Unity如何保存场景,如何导出工程文件/如何查看保存位置?【各版本通用】

如何保存场景&#xff1f; 在unity中CtrlS 或者File—>Save 输入你要保存的场景名【建议保存在Scenes文件夹下】 下图&#xff0c;保存场景不在Scenes文件夹下&#xff1a; 下图&#xff0c;保存在Scenes文件夹下&#xff1a; 下图&#xff0c;保存完成 如何导出工程文…

深度学习的集体智慧:最新发展综述

一、说明 我们调查了来自复杂系统的想法&#xff0c;如群体智能、自组织和紧急行为&#xff0c;这些想法在机器学习中越来越受欢迎。人工神经网络正在影响我们的日常生活&#xff0c;从执行预测性任务&#xff08;如推荐、面部识别和对象分类&#xff09;到生成任务&#xff08…

GoF之工厂模式

Spring GoF之工厂模式工厂模式的三种形态简单工厂模式简单工厂模式优缺点 工厂方法模式工厂方法模式的优缺点 GoF之工厂模式 ● 设计模式&#xff1a;一种可以被重复利用的解决方案。 GoF有23种设计模式&#xff0c;还有其它的设计模式&#xff0c;比如&#xff1a;JavaEE的设…

Docker容器编排

文章目录 基本概念Docker ComposeSwarm分布式NodeTaskservice集群搭建弹性伸缩 基本概念 针对容器生命周期的管理&#xff0c;对容器生命周期进行更方便更快捷的方式进行管理。 依赖管理&#xff1a;当一个容器必须在另一个容器运行完成后&#xff0c;才能运行时&#xff0c;…

RT-DETR推理详解及部署实现

目录 前言1. RT-DETR-官方2. RT-DETR-U版2.1 RT-DETR预测2.2 RT-DETR预处理2.3 RT-DETR后处理2.4 RT-DETR推理 3. RT-DETR-C3.1 ONNX导出3.2 RT-DETR预处理3.3 RT-DETR后处理3.4 RT-DETR推理 4. RT-DETR部署4.1 源码下载4.2 环境配置4.2.1 配置CMakeLists.txt4.2.2 配置Makefil…

JavaFX(其他控件02)(综合运用)

小技巧 图片控件的使用:Image/ImageViewnew ImageView(new Image(url,宽,高,true,true))--绝对路径: file:D:\\图片\\6.jpg --相对路径: src里面建了个文件夹 images/1.png滑块&#xff1a;Slider show(true) major(10) getValue() 保留2位小数&#xff1a;String.format(&q…

SOME/IP 协议介绍(四)RPC协议规范

RPC协议规范 本章描述了SOME/IP的RPC协议。 传输协议绑定 为了传输不同传输协议的SOME/IP消息&#xff0c;可以使用多种传输协议。SOME/IP目前支持UDP和TCP。它们的绑定在以下章节中进行了解释&#xff0c;而第[SIP_RPC_450页&#xff0c;第36页]节讨论了选择哪种传输协议。…

基于SSM的停车场管理系统设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。你想解决的问题&#xff0c;今天给大家介绍…

[pipe-自写管道] 强网拟态2023-water-ker

程序分析 保护当然都开了, 题目给了一次增加, 释放, 修改一字节堆块的能力, 这里释放堆块后没有将其指针置空从而导致了 UAF. 漏洞利用 这里的堆块大小为 512 字节并是 SLAB_ACCOUNT, 所以可以直接利用管道去构造自写管道从而构造任意读写系统, 详细见大佬博客:【CTF.0x08】D…

如何在Linux服务器上后台持久运行Gunicorn

如何在Linux服务器上后台持久运行Gunicorn **问题概述****解决方案一&#xff1a;使用nohup命令****解决方案二&#xff1a;使用systemd服务****创建systemd服务文件****修改systemd服务文件以使用虚拟环境**日志管理**激活并启动服务&#xff1a;**如何设置用户和组**确认用户…

【博士每天一篇文献-算法】A pseudo-inverse decomposition-based self-organizing modular echo

阅读时间&#xff1a;2023-11-6 1 介绍 年份&#xff1a;2022 作者&#xff1a;王雷&#xff0c;北京信息科技大学自动化学院 期刊&#xff1a; Applied Soft Computing 引用量&#xff1a;12 提出了一种基于伪逆分解的自组织模块化回声状态&#xff08;PDSM-ESN&#xff09…

基于python+django的美食餐厅点餐订餐网站

运行环境 开发语言&#xff1a;Python python框架&#xff1a;django 软件版本&#xff1a;python3.7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;PyCharm/vscode 前端框架:vue.js 项目介绍 本论文主要论述了如何使用python语言开发…

asp.net员工管理系统VS开发sqlserver数据库web结构c#编程包括出差、请假、考勤

一、源码特点 asp.net员工管理系统是一套完善的web设计管理系统&#xff08;主要包括出差、请假、考勤基础业务管理&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010 &#xff0c;数据库为sqlserver2008&a…

Http状态码502常见原因及排错思路(实战)

Http状态码502常见原因及排错思路 502表示Bad Gateway。当Nginx返回502错误时&#xff0c;通常表示Nginx作为代理服务器无法从上游服务器&#xff08;如&#xff1a;我们的后端服务器地址&#xff09;获取有效的响应。导致这种情况的原因有很多&#xff1a; 后端服务器故障ngin…

在 WSL 上启用 NVIDIA CUDA

环境要求 Windows 11 或 Windows 10 版本 21H2特定版本的GPU驱动&#xff1a; 安装支持 NVIDIA CUDA 的 WSL 驱动程序&#xff1a; https://www.nvidia.com/download/index.aspx具体安装哪个版本&#xff0c;查阅&#xff1a;https://docs.nvidia.com/cuda/wsl-user-guide/in…

从虚拟机下载开始的kubeSphere安装

目录 一、虚拟机安装 二、镜像下载安装 1、镜像下载 2、虚拟机创建 3、虚拟机系统安装 三、虚拟机配置 1、IP固定 2、配置yum阿里源 3、关闭防火墙 4、 关闭selinux 5、 禁止swap交换 6、内核参数修改 7、设置kubernetes源 四、docker安装 五、虚拟机分组 六、…

Linux之IPC通信共享内存(一次拷贝)与消息队列、管道、信号量、socket(两次拷贝)总结(六十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

【蓝桥杯选拔赛真题18】C++病毒繁殖 第十二届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析

目录 C/C++病毒繁殖 一、题目要求 1、编程实现 2、输入输出 二、算法分析 <