本章讲解知识点

    1. 什么是Git?
    1. 为什么要使用版本控制工具?
    1. 版本控制工具的前世今生

  • 本专栏适合于软件开发刚入职的学生或人士,有一定的编程基础,帮助大家快速掌握工作中必会的工具和指令
  • 本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅
  • 如专栏内容有错漏,欢迎在评论区指出或私聊我更改,一起学习,共同进步。
  • 相信大家都有着高尚的灵魂,请尊重我的知识产权,未经允许严禁各类机构和个人转载、传阅本专栏的内容。

1. 什么是Git?

Git 是一个开源分布式版本控制系统,广泛用于软件开发和版本管理。它由 Linus Torvalds 于 2005 年创建,最初是为了管理 Linux 内核开发而设计的,但现在已经成为开源和私有软件项目的版本控制标准之一

Git 的工作方式是通过快照来存储文件的变化,而不是通过差异。每次提交都会创建一个新的快照,并将该快照与前一个快照进行比较。这种设计使得 Git 在处理文件的版本历史时非常高效,并且具有强大的分支和合并功能,使多人协作变得更加容易。

一句话总结:Git 是一种开源分布式版本控制工具,应用十分广泛,小到我们平时使用 github 网站,大到公司中多人合作的大型项目开发。是软件开发人员的必备技能,也是面试常考的内容。


2. 为什么要使用版本控制工具?

我们可以先看两个例子,一个是毕业论文版本控制,一个是游戏地图版本管理

img

可以看出来,版本控制的最原始阶段,是采用手动方式,复制副本,直接修改内容。

相信大家从例子中能明白,手动方式其实是一种很滑稽的方式(^_^),容易惹笑话。

缺点

  1. 副本命名随意。

  2. 版本新旧难辨。

  3. 无法判别修改的内容是什么。

单人开发,版本控制已经如此困难;而如果是多人开发一个项目,手动版本控制简直就是噩梦。


3. 版本控制工具的前世今生

其实 Git 指令相当简单,最好的方式就是边学习边实操。不过前面两节内容又不得不讲,这是为了构成知识的完整体系。

我建议可以先跳过【上】,直接学习【中】、【下】中的指令实操内容。然后再回过头来学习理论基础,形成完整的知识体系。

3.1. diff 和 patch

在最初的版本控制出现之前,有 diffpatch 被用于版本控制。

1.diff 是 Linux 里的命令,用于比较文件的差异。diff 以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则 diff 会比较目录中相同文件名的文件,但不会比较其中子目录。

img

2.Linux patch 命令用于修补文件。patch 指令让用户利用设置修补文件的方式,修改、更新原始文件。

img

3.2. RCS 最早期的本地版本控制工具

RCS(Revision Control System)是非常古老的版本控制工具。它采用自己的格式,把 diff 的集合保存到磁盘中(可以通过diff -n left.c right.c产生 RCS 格式的 diff 内容),能通过这些 diff 集合,重新回到文件修改的任何历史节点。

3.3. CVS & SVN : 集中式版本控制工具

img

3.4. Git : 分布式版本控制工具

Linus Torvalds 为了帮助管理 Linux 内核开发,开发出了Git(真的强)。

1.集中式版本控制工具——差异文件

img

集中式版本控制工具通过积累文件差异来控制版本,所以系统总是保存的是差异文件,但是如果中间某一个差异文件丢失或损坏,那么整个历史版本都无法还原了,导致稳定性太差。