初识git

45 阅读7分钟

同学们好,我将带领大家认识git并介绍相关概念。在介绍概念之前,我想先设定一个场景来引出这个概念,直接向大家讲解这个概念,目前大家可能并不能很好地理解它。接下来我们将讨论的场景是我们在工作或者学习中经常遇到的一个问题。例如,你的老板或者导师需要产出一款产品,需要你帮助他们完成一件事情,即帮助他们撰写产品设计文档。将工作交给你之后,你会帮助你的老板撰写一份文档。有了文档之后,你将文档提交给老板查看。老板告诉你这份文档不太符合他的预期,与他之前相差一点点,需要你拿回去再修改。你拿回文档之后,你就进行了第一次修改。

修改完成后,你将这份文档交给你的老板查看,发现与预期有些差距,需要再次修改。这时再次进行第二次修改。

你将第二次修改的文档交给你的老板,你的老板可能是一个刁钻的老板,他可能没有仔细阅读:这个文档不如你第一次写的文档,你再拿回去修改,这次拿回来继续修改,反复经过多次,最终把这个文档修改了5次就有了第五次修改。你把第五次修改的文档交给你的老板,你的老板说我看了这个文档,我认为你第一次修改之后的文档最符合我的预期,你听到这句话可能会让他的心情非常暴躁。

在这种情况下,你无法获取第一次修改的内容。原因是你一直对一份文档进行多次修改,而这份设计文档保留的内容是第五次修改的内容。如果你想获取第一次修改的内容,那么你无法获取,这时你的工作可能无法完成。

吸取这次经验教训,下次你的老板要求你产出一个产品并撰写一份设计文档。你通常会如何做?例如,现在让你书写第一个设计文档,你又书写了一版设计文档,这时你就为设计文档命名为V1,即第一版。你的老板肯定不会认同第一版文档,他会要求你修改。老板看了文档后,认为你的文档与他的预期有差距,要求你再修改。这时你不会修改文档,而是会将内容复制并拿到副本进行内容修改。这时你对副本命名为设计文档V2。

V2是你的第二个版本,现在你有两个版本文档,你的老板是第一个版本,第二版本都可以直接拿给她。你把这个文档拿给他之后符合他的预期,经过多次修改,你已经将文档更新到第五个版本,设计文档v5。你的老板拿到v5之后果然不出所料,和之前做了同样的事情。小王我认为你的文档还不如你的第一版文档的内容,你把第一版文档拿给我,这时候你内心比较开心,因为你的第一版文档存储在你的电脑上,可以直接拿给他,这时候你只要把文档直接发给老板就可以完成你的任务。针对这个场景有两套做法,第一套做法是对一个文档进行多次修改,这种做法存在问题,我们无法对不同版本进行管理,无法拿到第一次修改内容,也无法拿到第二次、第三次修改内容。因此我们更换了一种做法,变成了对一个文档进行多个版本管理的方法。虽然可以,但是存在一个严重问题。目前我们只有5个版本的文档,如果你的老板继续刁难你,认为你的文档不够与我的预期相差很多,那么你需要继续进行文档升级,当你升级到10个版本、20个版本甚至上百个版本时,你能拿出中间版本吗?

你可以拿出来,但是你的老板说你添加了某个版本的功能,你是否知道在这100个版本中有哪1个版本记录了这个功能,修改了新增的功能你无法得到。因此,版本维护操作存在很大问题。随着版本的不断增多,维护版本非常困难,并且维护好版本具有挑战性。

image-20251224194837759.png 我们需要记住每个版本修改的内容,这是我们维护版本时面临的巨大挑战。我们在管理版本时确实会遇到问题,解决问题必须有解决方案,其他大佬为我们提供了一系列版本控制器,这个版本控制器的诞生是什么意思?这个版本控制器实际上是解决我们刚才提到的一些问题的设备,它可以让我们了解文件的所有历史,并且它发展的过程都可以被我们的版本控制器维护。通俗来讲,它可以记录我们在项目中需要编写的代码文件。对于所有代码文件的管理,每一次改动和版本迭代都可以进行管理,我们可以记录每次修改的内容。接下来我们要向大家介绍git,它是目前最主流的版本控制器。

在了解版本控制器的功能之后,我们再向大家介绍一下。Git可以控制电脑上所有格式的文件,例如我们刚才提到的文档。git是版本迭代管理系统,可以记录或者维护所有格式的文件,例如UC文档或者rvt文档,它都可以被管理。对于开发人员而言,使用git最重要的是可以帮助我们管理软件开发项目中的源代码,增加项目中的源代码文件。

Git相关内容先讲述到这里,接下来还需要提及注意事项。既然刚才提到git可以帮助我们记录每个版本修改的内容,那么我将向大家说明具体场景。例如我们有一份文档,我们可以随意绘制。

我们想要对文档进行一次修改,需要在文档的第二行新增一个单词,这是我们新增的内容。新增之后它可以帮我们记录对应的修改内容,并告诉大家他记录了哪些内容。新增了一个单词,形成了一个git单词。我们拿到这个之后可以看到git实际上可以很好地管理我们每次修改或者新增或者其他操作内容。

image.png 这个问题针对我们的文本文件而言。文本文件可以记录每次修改的内容,但是我们的文件不仅仅是文本格式的文件,还包含一些二进制文件。

例如我们正常看到的图片是二进制文件,包括正常使用的视频也是二进制文件,即图片和视频。对于二进制文件,它无法跟踪文件的具体变化。例如在修改图片时,文件本来是100KB,被我们修改成了200KB,版本控制器不知道具体修改内容。