Linux | 分布式版本控制工具Git【版本管理 + 远程仓库克隆】-1

简介: Linux | 分布式版本控制工具Git【版本管理 + 远程仓库克隆】

一、前言

本文来为读者介绍一下分布式版本控制工具Git,可能你听说过Gitee/GitHub,里面都带有git的字样,那它们和Git之间有什么关联呢❓ Git又是何物,让我们一起走进本文的学习:book:

Git(读音为/gɪt/)是一个==开源的分布式版本控制系统==,可以有效、高速地处理从很小到非常大的项目版本管理。 [1]  也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件 —— 来自百度百科

image.png

上面说到了对于git来说支持分布式管理,简单来说就是【多分支】,所以它在团队协作中也是起到尤为重要的作用,大家可以将自己的代码上传到同一个仓库中进行管理,方便了项目开发时的多人协作。因此git其实对于我们在项目开发过程中也是重要的一个工具🔧

不过本文不会涉及到分布式,因为博主还没有学习得那么深入,只是了解了一下。不过会带大家了解git 的历史背景,知道它的由来。并且做到能在 LInux 上使用 git ,完成代码的提交等基本操作👈


二、有关git的相关历史介绍

首先我们要说说Git这个东西是怎么来的,是谁发明创造了它

  • 对于Git的创建者,就是下面这个“小伙子”,它叫做【Linus Torvalds】,被称做Linux之父、Linux内核的发明人及该计划的合作者

image.png

  • 他在开创Linux系统的时候,开发了一段时间后便将他的代码开源出来,使得全世界的顶级黑客、工程师可以一起参与到Linux的开发与制作中来,所以每天都会有很多人给他发代码,那么他只能==复制粘贴==,这显得很烦很累,于是他便想到有没有这么一款版本控制和多人协作的软件呢,这样可以提高我们的开发效率❓
  • 于是他找到了这么一款软件叫做【BitKeeper】,不过呢它是收费的,就很难受。这件商业公司的老板就找到【Linus Torvalds】觉得很欣赏他,于是就免费提供给他的社区使用,于是大家就使用它进行了高效地开发image.png
  • 但是呢,那些世界级的顶级黑客、工程师充满着好奇心,就想要去破解一下这块软件。于是有一天,一个小白工程师在完成了某项破解工作后将他的成果发布到社区中,就被这家公司的人看到了,于是老板很愤怒(我给你免费使用,但你来搞我?),于是就不给他们免费用了
  • 那此时【Linus Torvalds】就又开始了他的Ctrl + c/v。。。直到有一天终于受不了了,便自己用了两三周的时间开发出了一款版本控制和多人协作的软件,它就是 —— git。直到现今的代码托管平台【Gitee】【GitHub】都是基于它实现的

而Git 也因为其精简的设计、易于学习、占地面积小、性能快等一些系列优点深受程序员喜爱

三、Git版本管理

接下去我们来聊聊有关Git的版本管理。其实对于Git还有很多其他的功能,像分支管理、版本管理、版本回退、项目发布等等,这些功能可以支撑我们进行多人协作

1、感性理解 —— 大学生实验报告

因为对于Git的版本管理这一块挺难理解的,所以我会通过一个小案例来帮助大家理解,那就是我们大学生都要写的一样东西 —— 实验报告

对于实验报告呢,相信大家都写过,额。。。应该说是都抄过。各种像大物实验报告、英语翻译实验报告、网络实验报告、电路实验报告等等,对于这个报告而言一般有一两个人写好了那基本大家也都可以写好了,看上去也是差不多的样子,因为总会有那么一两个人会认真地去写实验报告✍


好,话不多说,我们继续扯

  • 你呢是一所普通高校的学生,叫做【张三】,你的室友叫做【小明】,今天是周一,明天就有大物实验课,所以就要交实验报告,不过你们是不同组的,所以你可以后天再交,到时候可以抄小明的。此时你的室友小明正在奋笔疾书地“写”着它的实验报告,争取要做写得最好的那一个,于是将它的报告改来改去,最后改的自己非常满意之后才上床睡觉💤
  • 到了第二天,小明开开心心地找到老师(^ _ ^),交上了他的实验报告,不过到了下午老师就把小明叫到了办公室,和它讲了有关实验报告的内容,挑出了小明实验报告中的很多问题,于是原本信心满满的小明在听了老师这番说辞之后便很郁闷地回到了宿舍开始了它的 ==实验报告修改之路==。于是他将实验报告该来改来改去,终于将老师和它讲的这些修改好了,于是后一天来到物理老师的办公室交上了他的那份实验报告📰

image.png

  • 这天当老师收到小明修改后的【第二份】实验报告后,看来看去又指出了他一些地方的问题,于是就再让小明回去修改,那此时的小明没办法,只能按照老师的要求来,继续回去修改自己的报告。有耐心的小明在又一次修改了自己的报告后找到老师,可老师还是说:“小明,你这报告怎么越改越差呀,还不如第二版来得好呢,我看你也别改了,就把第二份的实验报告交上来,我看看给你些分数
  • 听了老师的这番说辞,小明心想,我每次都是在上一次的报告上直接做修改的呀,怎么还找得到第二版的实验报告呢?那此时的小明就非常慌张,不知道该如何是好,只能回忆那个时候自己的报告是如何写的,然后再慢慢地做修改

此时的你【张三】目睹了上面这一切过程,于是心中便多了一个心眼👀

  • 在小明交完实验报告的后一天,你也需要交实验报告了。 当报告交上去后,果然老师也把你叫过去然后让你修改实验报告里的很多内容,于是呢你也回到寝室准备开始你的修改,此时的你因为在看了室友小明的遭遇之后,于是就多了一份警惕,你呢就将原先的那份报告ctr + c,ctrl + v在当前目录下保留了一份,将原先的这份记为【版本1】,然后拷贝出来的副本修改为【版本2】,然后在版本2上去做一个修改,修改完之后,又拿到物理老师那里。果然,她又指出了其他的一堆问题让你去继续修改
  • 回到宿舍后,你也是和上次一样,将【版本2】进行ctr + c,ctrl + v在当前目录下保留了一份,然后再【版本3】上面做修改,改了一个晚上,第二天拿去给她看的时候,她依旧是不满意(一般的老师也不会这样),于是就说:“张三呀,你和是不是和小明一个宿舍的呀?你们这个报告都写得差不多,而且都不怎么样,这样吧,你把第二份的报告交上来,我给你个成绩
  • 此时你心中暗暗窃喜,回到宿舍后马上打开电脑,然后将这个目录下的【版本2】实验报告立马发给了老师

image.png

2、程序员与产品经理

在上一个案例的基础上,我使用【程序员与产品经理】的关系再来解释一下

  • 其实对于学生来说,可以看作是我们程序员;对于老师来说,可以看作是产品经理。当我们将业务逻辑写好将代码上传的时候,终于歇了一口气,可以回家休息了。但是过段时间产品经理又打电话来说这个地方写得不对,要你重新写的时候就会很郁闷,以及有时候和【测试人员】之间都会发生一些冲突

image.png

  • 当产品经理让你改来改去,发现这块功能没有之前好的时候想让你重写改回两个礼拜前的那个版本,此时若是你没有提前保存一份的话就【抓瞎】了,又得去重新写一遍,毕竟我们都是打工人🔧

难道代码也和实验报告一样,使用ctr + c,ctrl + v复制吗,那万一代码多了怎么办,这就需要有东西可以来专门管理我们的代码

3、张三的CEO之路 —— 版本管理工具的诞生

是的,故事还没完,我们接着上面的实验报告讲💬

  • 你,也就是【张三】在经历了这一切后,知道了这个老师是怎样的教学方式。而且这个老师还要带张三和他这个班其他的课程,所以张三便害怕再出现这样反复修改实验报告的狼狈样子🤦‍,于是呢他就把这次的实验报告修改过程经历做了一个总结,保留下来:newspaper:
  • 他呢也是一个很热心肠的人,就和其他同学说:“以后若是这个老师的其他实验报告,如果不给你通过的话就来找我,把修改前后修改后的版本都保存在我这里,如果想要哪个版本都可以来找我拿。“于是呢越来越多的同学来找到张三让他帮忙,到了后面不仅是同班同学,其他专业、甚至是其他学院的同学知道了又张三这么一个人,于是都来找他,此时张三就忙不过来了,和【Linus Torvalds】一样就是每天Ctrl + c/v。。。
  • 于是他也和【Linus Torvalds】一样开发出来这么一种软件,拥有服务端和客户端,其他同学只需要在自己本地做管理,==将他们的实验报告上传到这个软件中,就可以实现自己对自己的提交记录进行管理==(功能:新建管理文件夹,然后将自己原本的内容保存在这个里面,自己可以再做其他修改)。接下去他自己就很方便了,不需要再帮别人做这么多事
  • 但是呢他又一想,不光光是我们学校会出现这样的老师,像清北、一些985/211的学生可能也会有这样的困惑,于是呢就将自己的这款软件发布了出去,推向了全国,为他取了个名字。之后当张三毕业之后,就开了一家公司,是这家公司的CEO,于是就联合其他程序员优化了这个软件,将其部署到Web上,而且开发了客户端,客户可以直接在本地浏览操作,界面点击就可以完成内容的托管。
  • 它就是—— gitee/GitHub【底层基于git】

故事讲完了,这其实就是Gitee发明者故事,它知道了Linux之父发明了Git,于是便在它的基础上实现更趋向于大众化、专业化的成就,使得大家也可以使用它来进行版本的管理

相关文章
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
107 8
|
2月前
|
监控 Java Linux
Linux系统之安装Ward服务器监控工具
【10月更文挑战第17天】Linux系统之安装Ward服务器监控工具
68 5
Linux系统之安装Ward服务器监控工具
|
2月前
|
JSON JavaScript Linux
Linux系统之安装cook菜谱工具
【10月更文挑战第15天】Linux系统之安装cook菜谱工具
45 2
Linux系统之安装cook菜谱工具
|
1月前
|
存储 开发工具 git
git工具使用教程全讲解
本文介绍了版本控制的概念及其重要性,详细对比了多种版本控制工具,如VSS、CVS、SVN和Git,重点讲解了Git的基本使用方法、工作原理及与SVN的区别。此外,文章还介绍了GitHub、GitLab和Gitee等流行的代码托管平台,以及如何在这些平台上注册账号、创建和管理仓库。最后,文章还提供了如何在IntelliJ IDEA中配置和使用Git的具体步骤。
61 1
|
1月前
|
缓存 监控 Linux
Linux性能分析利器:全面掌握perf工具
【10月更文挑战第18天】 在Linux系统中,性能分析是确保软件运行效率的关键步骤。`perf`工具,作为Linux内核自带的性能分析工具,为开发者提供了强大的性能监控和分析能力。本文将全面介绍`perf`工具的使用,帮助你成为性能优化的高手。
156 1
|
1月前
|
缓存 监控 Linux
掌握Linux性能分析:深入探索perf工具
【10月更文挑战第26天】
69 1
|
2月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
22天前
|
存储 NoSQL Java
使用lock4j-redis-template-spring-boot-starter实现redis分布式锁
通过使用 `lock4j-redis-template-spring-boot-starter`,我们可以轻松实现 Redis 分布式锁,从而解决分布式系统中多个实例并发访问共享资源的问题。合理配置和使用分布式锁,可以有效提高系统的稳定性和数据的一致性。希望本文对你在实际项目中使用 Redis 分布式锁有所帮助。
65 5
|
25天前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
55 8
|
1月前
|
NoSQL Redis
Redis分布式锁如何实现 ?
Redis分布式锁通过SETNX指令实现,确保仅在键不存在时设置值。此机制用于控制多个线程对共享资源的访问,避免并发冲突。然而,实际应用中需解决死锁、锁超时、归一化、可重入及阻塞等问题,以确保系统的稳定性和可靠性。解决方案包括设置锁超时、引入Watch Dog机制、使用ThreadLocal绑定加解锁操作、实现计数器支持可重入锁以及采用自旋锁思想处理阻塞请求。
58 16