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

注解目录

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 上了。这个过程中,可能会提示输入用户名密码,输人即可。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(一)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB

一、七种算法(DBO、LO、SWO、COA、LSO、KOA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁…

Java 简单实现一个 UDP 回显服务器

文章目录 UDP 服务端UDP 客户端实现效果UDP 服务端(实现字典功能)总结 UDP 服务端 package network;import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException;public class UdpEchoServer {private Da…

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

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

C/C++调试工具 - gdb详解

C/C调试工具 -gdb详解 1 简介 2 常用的命令 3 使用的条件 4 程序调试 4.1 直接运行程序 4.2 断点调试(在某一行) 4.3 断点调试(在函数入口处打断点) 5 调试core文件 5.1 生成core文件的方法 5.2 调试core文件 1 简介 GDB是Linux下非常好用且强大的调试工具。GD…

使用 Ruby 的 Nokogiri 库来解析

爬虫程序的主要目标是获取指定网站上的数据。在这里,我们将使用 Ruby 的 Nokogiri 库来解析 HTML,并使用 HTTParty 库来发送 HTTP 请求。下面是一个简单的示例,演示如何使用 Ruby 编写一个爬虫程序来爬取 1688 网站的数据。 require nokogir…

CentOS 7上Root用户使用ifconfig命令无结果

假如遇到如下情况,在CentOS 7上使用root用户运行ifconfig命令没有结果,如图所示: 这可能是因为缺少网络工具包或ifconfig命令不在root用户的PATH环境变量中。 可以尝试以下解决方法: 1.检查PATH环境变量:确保PATH环境…

域名无法访问了,如何找回浏览器的缓存

背景需求 双十一即将来临,这意味着我购买了三年低配的阿里服务器,而它的服务期限也即将到期。为了提前做好准备,我在一周前对静态网站进行了备份,并成功地使用了Vercel进行部署(已经有了域名)。相比于付费…

MySQL join原理及优化

MySQL的JOIN原理是基于索引和算法的。在执行JOIN查询时,MySQL会根据连接字段上的索引来查找匹配的记录。 这种算法在链接查询的时候,驱动表会根据关联字段的索引进行查找,当在索引上找到了符合的值,再回表进行查询,也就…

【STM32】TIM2的PWM:脉冲宽度调制--标准库

注意点: TIM_Period---->指要进行比较的值Compare TIM_Prescaler----> 指要进行分频的值【分频值/原始时钟值】 PWM是一种周期固定,脉宽可调整的输出波形。 https://www.cnblogs.com/brianblog/p/7117896.html 0.通用寄存器输出 1.捕获/比较通道…

redis的基本命令,并用netty操作redis(不使用springboot或者spring框架)就单纯的用netty搞。

大家如果对使用netty搞这些http请求什么的感兴趣的,可以参观我自己创建的这个项目。 nanshaws/nettyWeb: 复习一下netty,并打算做一个web项目出来 (github.com) Redis的基本命令包括: SET key value:设置指定key的值。 GET key…

Halcon WPF 开发学习笔记:HSmartWindowControlWPF正常加载

文章目录 加载问题相关文章彻底解决 加载问题 我们在WPF中使用Halcon的时候,会出现图片被拉伸的问题,需要拖动才可以解决,我网上找了好久,终于找到了如何成功解决这个问题。 相关文章 3.7 Halcon 窗体显示对象消失问题 【halcon】…

2023年第十六届山东省职业院校技能大赛高职组“信息安全管理与评估”赛项规程

第十六届山东省职业院校技能大赛 高职组“信息安全管理与评估”赛项规程 一、赛项名称 赛项名称:信息安全管理与评估 英文名称:Information Security Management and Evaluation 赛项组别:高职组 赛项归属:电子与信息大类 二…

【Java】反射

1.什么是反射机制? Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 的反射机制…

[Go语言]SSTI从0到1

[Go语言]SSTI从0到1 1.Go-web基础及示例2.参数处理3.模版引擎3.1 text/template3.2 SSTI 4.[LineCTF2022]gotm1.题目源码2.WP 1.Go-web基础及示例 package main import ("fmt""net/http" ) func sayHello(w http.ResponseWriter, r *http.Request) { // 定…

spring-cloud-stream

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…

gma 2.0.3 (2023.11.12) 更新日志

安装 gma 2.0.3 pip install gma2.0.3新增 此版本为 gma 2 功能更新最大的版本,且主要集中在矢量数据处理上。 0.1 io.ReadVector:直接打开矢量数据为Layer,用以简化io.Open.GetLayer 过程。Layer的新增功能如下: 序号功能性质说…

Mac电脑专业raw图像处理 DxO PhotoLab 7中文最新 for mac

DxO PhotoLab 7是一款专业的图像处理软件,为摄影师和摄影爱好者提供了强大而全面的照片处理和编辑功能。 该软件可以处理来自各种相机的RAW格式图像,包括佳能、尼康、索尼、富士等品牌,同时也支持JPEG格式的处理。这使得用户可以在不损失图像…

【Proteus仿真】【STM32单片机】多路温度控制系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用按键、LED、蜂鸣器、LCD1602、DS18B20温度传感器、HC05蓝牙模块等。 主要功能: 系统运行后,默认LCD1602显示前4路采集的…

4.HTML网页开发的工具

4. 网页开发的工具 4.1 快捷键 4.1.1 快速复制一行 快捷键:shiftalt下箭头(上箭头) 或者ctrlc 然后 ctrlv 4.1.2 选定多个相同的单词 快捷键: ctrld 4.1.3 添加多个光标 快捷键:ctrlalt上箭头(下箭头&…

不使用 pip 安装 Python 包

在本文中,我们将学习如何在 Python 中安装没有 pip 的库。 我们还将学习如何使用 conda 命令在 Python 中安装包。 不使用 pip 命令安装 Python 库 在 Python 中,pip 命令是我们系统中安装开源库最常用的方法。 但是,除了 pip 命令之外&…