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

注解目录

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 所示。

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

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

相关文章

KCC@广州与 TiDB 社区联手—广州开源盛宴

10月21日,KCC广州与 TiDB 社区联手,在海珠区保利中悦广场 29 楼召开了一次难忘的开源盛宴。这不仅仅是 KCC广州的又一次线下见面,更代表着与 TiDB 社区及广州技术社区的首次深度合作。 活动的策划与组织由 KCC广州负责人 - 惠世冀、PingCAP 的…

mysql基础 --子查询

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

解决win11更新后,文件夹打不开的bug

更新win11系统了,给我更了个bug,找了好多解决方案,发现下面这个可以解决问题。 第一步 找到注册表 第二步 备份注册表 为了防止意外情况,备份注册表。如有意外问题,可以导入导出的注册表进行恢复。 第三步 删除指定…

华为防火墙vrrp+hrp双机热备负载分担(两端为交换机)

主要配置: FW1 hrp enable hrp interface GigabitEthernet1/0/2 remote 172.16.0.2 interface GigabitEthernet1/0/0 这里可以假想为接两条外线,一条外线对应一个vrrid undo shutdown ip address 1.1.1.2 255.255.255.0 vrrp vrid 3 virtual-ip 1.1.1…

手写C++ 实现链表的反转、删除、合并

目录 一、手写List成员方法 1.1 打印链表 1.2 删除链表节点 1.3 链表中倒数第k个节点 1.4 反转链表 1.5 合并两个排序链表 二、完整代码 一、C实现链表成员方法 在上一篇博客《手写链表C》,实现了基本的List类。在面试中,经常被问到List如何反转、…

ROS 学习应用篇(二)话题Topic学习之话题的发布与订阅

顾名思义,这是一个异步的消息传达过程 首先是消息的发布,接着是消息的订阅 话题发布 由发布者发布一个“消息”的数据结构,再由订阅者订阅这个消息结构。 再开始撰写一段程序之前,我们需要在程序代码中引入库→节点初始化→创…

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

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

【Github】git clone命令下载文件中途停止

方法一: 使用git clone命令下载github上的源代码时,有时文件下载到一定百分比时就停止不动, 这是因为我们所下载的文件很大,超过了git预先分配的Postbuffer容量,所以一直卡在那里。可以使用以下命令查看当前Postbuffe…

景联文科技加入中国人工智能产业发展联盟(AIIA),与行业各方共促AI产业发展

近日,景联文科技加入中国人工智能产业发展联盟(AIIA),与行业各方共同挖掘人工智能数据的更多价值,破解中国人工智能AI数据短缺难题。 中国人工智能产业发展联盟(简称AIIA)是在国家发改委、科技部…

省钱攻略:三大运营商保号套餐办理攻略,不再当冤大头!

现在的朋友都是相当的聪明,都不想直接在营业厅办理套餐,而是选择保号套餐流量卡。 今天,小编主要介绍的就是三大运营商的保号套餐,以及如何办理! 如图所示: ​  电信最低可改5元套餐,移动、联…

计蒜客详解合集(2)期

目录 T1126——单词倒排 T1617——地瓜烧 T1612——蒜头君的数字游戏 T1488——旋转单词 T1461——校验信用卡号码 T1437——最大值和次大值 T1126——单词倒排 超级水的一道题,和T1122类似但更简单,分割后逆序输出即可~ 编写程序,读入…

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

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

收藏!7个国内「小众」的程序员社区

技术社区是大量开发者的集聚地,在技术社区可以了解到行业的最新进展,学习最前沿的技术,认识有相同爱好的朋友,在一起学习和交流。 国内知名的技术社区有CSDN、博客园、开源中国、51CTO,还有近两年火热的掘金&#xff…

【Kurbernetes集群】Pod资源、Pod资源限制和Pod容器的健康检查(探针)详解

Pod资源 一、Pod概述1.1 Pod的定义1.2 一个Pod能包含几个容器?1.3 Pod的分类1.3.1 控制器管理的Pod1.3.2 自主式Pod1.3.3 静态Pod 1.4 Pod中容器的分类1.4.1 Pause容器1.4.2 初始化容器1.4.3 应用容器 1.5 Pod常见的状态 二、Pod中的策略2.1 镜像拉取策略2.2 Pod中容…

【计算机网络】HTTPS

文章目录 前言为什么会出现 HTTPSHTTPS 是如何进行加密的1. 对称加密非对称加密中间人攻击3. 引入证书 前言 前面我们学习了应用层中使用比较常见的 HTTP 协议,但是呢?在实际的使用中,浏览器和服务器之间的通信其实很少使用到 HTTP&#xff…

Google Firebase PHP实现消息推送

获取key的方法: 登录谷歌开发者后台 https://console.firebase.google.com/?hlzh-cn function firebaseNotice($title,$body){$token_arr[token1,token2]; //用户的firebasetoken列表$notify_msg ["notification" > ["title" > $title…

C++入门 1——命名空间,缺省参数

C入门 一.前言二.命名空间2.1命名空间的定义2.2命名空间的使用 三.C的输入&输出四.缺省参数4.1概念4.2缺省分类 五.函数重载5.1概念5.2函数重载条件及代码 六.引用6.1概念6.2引用特性6.3常引用6.4使用6.5引用和指针的区别和联系 七.内联函数7.1概念7.2特性 一.前言 今天就…

[ Linux Busybox ] nandwrite 命令解析

文章目录 相关结构体nandwrite 函数实现nandwrite 实现流程图 文件路径:busybox-1.20.2/miscutils/nandwrite.c 相关结构体 MTD 相关信息结构体 struct mtd_info_user {__u8 type; // MTD 设备类型__u32 flags; // MTD设备属性标志__u32…

(免费版?)CLion Nova 强势登陆 C 和 C++ 开发领域

系列文章目录 文章目录 系列文章目录前言一、CLion Nova二、目标三、优势和改进四、显著差异五、如何安装 CLion Nova六、分享您的反馈意见总结 阿纳斯塔西娅-卡扎科娃 2023 年 11 月 9 日 前言 今天,我们宣布推出免费的 CLion 早期预览版,它使用 ReSh…

400G OSFP SR8光模块最新解决方案

数字化时代,意味着网络速度、能效和成本成为数据中心和通信网络关注的焦点。为了满足这些需求不断催生和进化新的产品,因此在这一背景下400G OSFP SR8光模块最新解决方案成为了很好的助力。该方案不仅提高了网络速度,还实现了节能降耗&#x…