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

news2024/12/29 8:11:59

注解目录

1、关于 Git

1.1Git 今生

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

1.2Git的爆发

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

2、用Git代码

2.1Git化使用

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

2.2 Git 的远端使用

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

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

3、用Git 管理硬件PCB

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

3.1Git的增量

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

3.2 AD 中的Git

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

3.3PCB 工程的协作开发

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

某某项目(final-version).zip、某某项目(final-final-version).zip,某某项目(final-final-打死不改-version).zip,某某项目(final-final-打死不改-inal-version-2021-3-21).zip,哭笑不得。我想很多人都干过这种事,别问我怎么知道的。使用标识或者日期来对研发项目进行版本管理.是一种形同虚设的方案。在这种管理方式下,最终的结果就是产生一大堆的带有各种标识的文件备份。凭借这些标识根本无从进行版本追溯。但值得肯定的是,大家都有基本的版本管理意识和需求,只是缺少一个实用有效的方法或工具。

万物皆有迭代,有迭代就有版本,有版本就有 Git。早日使用 Git,早日脱离苦海。

信 Git,得永生!

1

关于 Git

在 2015 年之前,可以说我的版本管理也是一团糟。我被动地的使用过 svn、soucesafe 这些版本控制工具,但是都不得其法。根本原因是我并不知道理想的版本管理应该是怎样的,直到我上手 Git。

Git,我们可以单独写出一本书来,因为它足够博大精深,甚至已经成了版本管理的实际标准,如图 4.1 所示。

1.1 Git的前世今生


Git 已经成为现在最优秀的分布式版本管理工具,没有之一。它的管理理念到现在仍然是很先进的。说起 Git 的起源,其实还是有些无奈的,可以说它是另一个大规模软件项目的副产品。

Linux 大家都知道,它的作者是世界上最伟大的程序员 Lius Torvalds(林纳斯·托瓦兹)。1969 年,Linus Torvalds 生于芬兰一个知识分子家庭。1988 年,Linus 进入赫尔辛基大学计算机科学系就读。芬兰人性格内敛,这与 Linus 的行事方式不谋而合,他对开源的信念是近乎执着的。在兴趣的驱使下,Linus 创造并发布了自制的开源操作系统,取名为 Linux。有人问过他,为什么要叫 Linux。他回答:我是个任性的杂种,我把所有我做的项目以我自己命名。看来程序员是偏执自恋而可爱的,连通神的 Linus Torvalds 也不例外。


图4.1 《Git版本控制管理》一书

Linux 是一个非常宏大的软件项目,单靠 Linus一个人是不可能完成的。开源软件的核心要意就是集思广益,团队协作,你在享用别人的代码的同时,也要为它创造贡献。在 2002 年以前,Linux 的维护研发是由世界各地的程序员共同参与的,他们写出来的代码全部都交给Linus 去合并(这个工作量可想而知)。2002 年以后,经过十多年的发展参与的人越来越多,而个人合并难以避免的就是效率低下,这也直接引起了维护者们的不满。难道没有工具可以实现代码的自动合并吗?当然是有的。当时已经存在一些版本控制工具了,像 CVS、SVN等,但是这些工具都是要收费的,而且使用的还是集中式版本管理方式。这就受到了 Linus 的唾弃(他坚定地认为,软件应该是免费开源的)。

后来 Linus 选择了 BitKeeper 分布式版本控制工具(BK)来作为 Linux 的版本管理工具这个工具的研发公司 BitMover,也是出于人道博爱的精神给他们免费使用了。但是 Linux 社区的很多贡献者对 BK 非常不满,原因是它不开源。既有怨气,必有勇士。一位叫 AndrewTridgell 的程序员违反 BK 的使用原则,对其进行了逆向工程,写了一个可以连接 BK 仓库的外挂。BitMover 认为他反编译了 BK。Linus 花了很多时间精力从中协调磋商,但是最终还是失败了。2005 年,BitMover 同 Linux 内核开源社区的合作关系结束。

Linus 一怒之下,决定自己造车轮。他基于使用 BK 时的经验教训,仅花了 2 周就开发出了自己的版本管理系统,也就是后来的 Git。Linus 怒而不乱,其实他早有此意并对市面上多个版本管理方案进行过评估。他提出了极具前瞻性的三个诉求:可靠性、高效、分布式。后来,这三个特性被视为 Git 的核心灵魂所在,深远地影响了 Git 及其他同类软件的后续发展,

1.2 Git的爆发


伟大的软件一定是很好地解决了行业内长期饱受诟病的一些重大问题和痛点。在 Git 问世之前很多的版本管理软件都采用服务器集中式管理方式,如图 4.2 所示。


在这种管理方式下,程序员每次进行开发前,都要先从服务器拉取版本,在开发完成之后.再将它推回到服务器。这带来两个问题:(1)开发用的电脑必须联网:(2)因为代码都存在远端服务器上,一旦服务器出现问题都是灾难性的,程序员的工作可能付诸东流。

Git 反其道而行之,它采用分布式的版本管理方式(Linus 起初选择 BK 也是因为它是分布式的)。分布式的主要思想是去中心化和本地化。程序员可以从服务器上拉取项目的完整仓库到本地,然后以离线的方式进行本地化的开发和提交。用 Linus 的话说:你可以在本地做很多事情,而完全不依赖于服务器和网络。而且本地化的管理,使得类似于 commit、版本回滚等操作都变得非常快速(集中式的版本管理所有操作都是直接与服务器进行远程访问的.所以总是要等待服务器的回应,这造成它行动缓慢,效率不高)。

Git 成功地替代了 BK,成为 Linux 的版本控制的原生方案,但它仍然只不过是服务于局部人群的一个工具而已。它如星星之火,要燎原还差一场风暴。要得到行业内普遍认同和接受是任重道远的。这个时候就不得不引出一个伟大的网站,是它最终成就了 Git,即 GitHub。这背后是三个年轻人创业的故事。

2007 年旧金山三个年轻人觉得 Git 是个好东西,就搞了一个公司,名字叫 GitHub。第二年上线了使用 Ruby 编写的同名网站 GitHub,这是一个基于 Git 的免费代码托管网站(有付费服务)。十年间,该网站迅速蹿红,击败了实力雄厚的 Google Code,成为全世界最受欢迎的代码托管网站。2018 年 6 月,GitHub 被财大气粗的 Microsoft 收购。2019 年 1月 GitHub 宣布用户可以免费创建私有仓库。根据 2018 年 0 月的 GtHub 年度报告显示,目前有 3100 万开发者创建了 9600 万个项目仓库,有 210 万家企业入驻。

相比 Git,GitHub 提供了更多的功能,比如 Web 管理界面、评论、组织、点赞、关注、图表俨然已经是一个社交网站了,大家围绕着开源项目进行使用、讨论和贡献等。

关于 GitHub 的历史和里程碑大家可以去百度一下,这里就不赘述了。

GitHub 是世界上最大的开源代码仓库,这是程序员的天堂。在这里,你可以站在无数高手的肩膀上,高效而高质量地完成自己的开发。在你打开 www.github.com 的一瞬间,你已经是开源主义军团中的一名战士了,如图 4.3 所示。

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

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

相关文章

ABAQUS分析步笔记

定义原则: 每个step的所有边界条件,载荷条件累加构成本step的仿真效果; step2需要在step1的状态基础上进行载荷运动等限定时,需要确保在step2中传递了step1的想要保留的特征,如: 1、BC-1 这里的BC-1的固…

2024最新fl studio 21.2.0.3842中文版完整下载

FL Studio 21.2.0.3842中文版完整下载是最好的音乐开发和制作软件也称为水果音乐软件。它是最受欢迎的工作室,因为它包含了一个主要的听觉工作场所。2024最新fl studioFL Studio 21版有不同的功能,如它包含图形和音乐音序器,帮助您使完美的配…

JRebel热部署——效率提升100倍(程序员工具必备)

1. 下载JRebel 2.激活程序 这里推荐一个免费获取jrebel激活服务器地址和激活邮箱的地址:点击进入 进入网站之后就可以获取到激活链接和邮箱 点击进入激活 复制过去激活就可以 然后就可以看到激活成功了 3.如何使用 代码修改后,直接CtrlShitF9 即可重新启动 4…

阿里云服务器怎么样?阿里云服务器优势、价格及常见问题介绍

阿里云(Alibaba Cloud)是阿里巴巴集团旗下的云计算服务提供商,其提供的云服务器(ECS)是其核心服务之一。在云计算市场中,阿里云服务器备受用户的青睐,那么,阿里云服务器究竟怎么样呢…

基于SSM的房屋租售信息管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

“基于RflySim平台飞控底层算法开发”系列专题培训 (第三期)

>> RflySim平台系列专题培训 RflySim平台是一个生态系统或工具链(官网:https://doc.rflysim.com),发起于北航可靠飞行控制研究组,主要用于遵循基于模型设计的思想进行无人系统的控制和安全测试。本平台选择MATL…

合成数据加速机器视觉学习

虽然机器学习在基于视觉的自动化中的应用正在增长,但许多行业都面临着挑战,并难以在其计算机视觉应用中实施它。这在很大程度上是由于需要收集许多图像,以及与准确注释这些图像中的不同产品相关的挑战。 该领域的最新趋势之一是利用合成数据…

51单片机PCF8591数字电压表数码管显示设计( proteus仿真+程序+设计报告+讲解视频)

PCF8591数字电压表数码管显示 1.主要功能:讲解视频:2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单&&下载链接资料下载链接(可点击): 51单片机PCF8591数字电压表数码管设计( proteus仿真程序设计报告讲解视…

C++以数组作为参数,传递数组地址

文章目录 函数如何使用指针来处理数组将数组作为参数意味着什么数组名和指针对应是好的吗? 参考资料 函数如何使用指针来处理数组 在大多数情况下,C和 C 语言一样,也将数组名视为指针。 C将数组名解释为其第一个元素的地址: cookies &…

YOLOv8 Ultralytics:使用Ultralytics框架训练RT-DETR实时目标检测模型

YOLOv8 Ultralytics:使用Ultralytics框架训练RT-DETR实时目标检测模型 前言相关介绍前提条件实验环境安装环境项目地址LinuxWindows 制作自己的数据集训练自己的数据集创建自己数据集的yaml文件football.yaml文件内容 进行训练进行验证进行预测 数据集获取参考文献 …

NAS 扩容简明指南:使用各种外设给 NAS 们扩容

说起来有趣,NAS 除了“不同设备共享存储”这个功能之外,最重要的功能就是为设备扩容,但是 NAS 自己的存储容量不够了,又该如何。 ​这篇文章分享下我目前使用外设给 NAS 扩容的思路,如何以相对低的成本来获取更大的容…

IPV6网络技术详细介绍

无状态和有状态并不是相互对立的,他们可以同时存在,也就是一张网卡上可以同时出现通过RA生成的IP以及通过DHCPv6获得的IP。 从图中可以看到,顺序为: 1、Stateless自动配置“链路本地地址”2、Stateless自动配置“全球地址”&…

mysql基础 --子查询

文章目录 子查询 子查询 一个查询语句,嵌套在另一个查询语句内部;子查询先执行,其结果被外层主查询使用;子查询放入括号内;子查询放在比较条件的右侧;子查询返回一条,为单行子查询;…

普华永道于进博会首发“企业数据资源会计处理一体化平台”

11月6日,在第六届中国国际进口博览会上,普华永道发布企业数据资源会计处理一体化平台(英文名为Data Accounting Platform,简称DAP)。该产品以普华永道“五步法”数据资源入表路径为理论依据,依托多年来普华…

c: CLion 2023.1.1

/** # encoding: utf-8 # 版权所有 2023 涂聚文有限公司 # 许可信息查看:https://www.learnc.net/c-data-structures/c-linked-list/ # 描述:https://blog.jetbrains.com/clion/2016/05/keep-your-code-documented/ # Author : geovindu,Geovin Du 涂…

2023年10 种用于最佳稳定扩散最佳方案

在过去的一年里,您可能已经看到了很多关于 ChatGPT 和其他 AI 自动纹理的新闻。但是,页面(或屏幕)上的文字远非现代组织和设计师使用人工智能的唯一方式。Stable Diffusion 等工具可帮助您创建令人惊叹的 AI 图像,供个…

CS224W5.1——消息传递和节点分类

从之前的文中,学习了如何使用图表示学习进行节点分类。在这节中,将讨论另一种方法,消息传递。将引入半监督学习,利用网络中存在的相关性来预测节点标签。其中一个关键概念是集体分类,包括分配初始标签的局部分类器、捕…

数据库安全:InfluxDB 未授权访问-Jwt验证不当 漏洞.

数据库安全:InfluxDB 未授权访问-Jwt验证不当 漏洞. InfluxDB 是一个开源分布式时序,时间和指标数据库。其数据库是使用 Jwt 作为鉴权方式,在用户开启认证时,如果在设置参数 shared-secret 的情况下,Jwt 认证密钥为空…

无人机航迹规划MATLAB:七种优化算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划

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

Docker修改容器内部文件的三种方法

为啥要记录呀 今天在修改Docker内部文件的时候,安装vim居然失败了,在执行apt-get update时一直有几个404,解决无果,最后放弃安装vim,将文件拷贝出来修改,然后再拷贝到docker内部。记录一下如何修改Docker内…