Git的简介与历史 | 青训营笔记

简介: 众所周知,咱们不论是前端还是后端的开发工程师,会面临很多版本问题,事实上哪怕是运营岗或者一些文职也会经常遇到要改好几版的问题。手动地一个个保存文件并以不同地命名是个解决方案,但是很显然在面对大量版本迭代的时候就很低效,并且在发送文件给同事或者甲方爸爸时还得费眼睛去找某个文件。作为拒绝简单重复劳动的程序员,我们需要一个更加自动化、更加程序化的工具来便利我的版本迭代。

众所周知,咱们不论是前端还是后端的开发工程师,会面临很多版本问题,事实上哪怕是运营岗或者一些文职也会经常遇到要改好几版的问题。手动地一个个保存文件并以不同地命名是个解决方案,但是很显然在面对大量版本迭代的时候就很低效,并且在发送文件给同事或者甲方爸爸时还得费眼睛去找某个文件。作为拒绝简单重复劳动的程序员,我们需要一个更加自动化、更加程序化的工具来便利我的版本迭代。

Git就是这样一个版本管理工具,也是目前最先进的


一、Git的介绍


文件管理模式主要有三种:

本地版本控制

集中版本控制

分布式版本控制

简要说明一下各个方式:

本地版本控制包含了前言所说的手动一个个保存文件并命名,也可以稍微先进一点,用自动化脚本或者其他工具来自动保存到本地

集中式版本控制就是将用户更新的文件自动同步到云端服务器里,通过网络的方式进行拉取和上传,有点像前段时间看到的NAS,用网络代替硬盘线来存储文件。只不过这里是单指版本管理,服务器是NAS的一种应用罢了。常见的集中式版本控制就是SVN。用这样的方式就可以很方便地实现多人合作编辑,不用在每个人电脑里存文件。

分布式版本控制集中式的控制固然有优点,但把全部的文件保存在服务器上也有隐患。服务器出现故障,则很可能你会失去全部的资料,努力付之东流。所有人都访问服务器进行文件版本迭代,服务器的负担也不小,并不是每个开发团队都能有预算来购买或者维护一个强悍的服务器的。这时候分布式版本控制就应运而生了。每个成员的电脑(也包括服务器) 都存有全部的版本文件,可以离线编辑,而当设备联网时,就可以将文件push到每个成员的电脑和服务器中,更新版本。这时候服务器坏了也没事,只要有一个人的电脑还有用,就能恢复全部的文件。


Question:学到这里有个小困惑,push的时候真的是直接push到每个人的电脑吗?成员是只要在线就自动接收吗?还是push是暂时push到服务器里,要成员手动拉取下来。如果是前者,那成员不在线会是个比较尴尬的问题,如果是后者,那和集中式控制好像区别不大?只是分布式存了所有文件在本地罢了。希望随着之后进一步学习可以解决这个困惑。

Git就是这样一个分布式版本控制工具


二、Git的历史


其实这个当今最火的版本管理应用还有一段小历史:

Linux之父Linus Torvalds创造Linux系统之后大获成功,但这也意味着他将肩负着维护庞大Linux内核的工作。在2005 年 4 月前一直使用BitKeeper(BK)管理着一个庞大的 Linux 内核源码,这些源码来自于完全不同的志愿者开发团队,Linux 是一个越来越受欢迎的类 UNIX 开源操作系统。BK 在当时是一个私有的付费工具,但是 Linux 的开发者可以免费使用它,直到 BK 的创始人 Larry McVoy 与一个 Linux 开发人员就不恰当地使用 BK 发生了争执。于是这位大佬就一气之下终止了与BK的合作,转而花了两周不到的时间,自己开发了一款替代品GIT。这就是当今最火的版本管理应用。



相关文章
|
Shell 开发工具 git
[笔记]Git 介绍以及入门基本功能(一)
[笔记]Git 介绍以及入门基本功能
|
7月前
|
存储 XML Shell
Git笔记
Git笔记
47 0
|
7月前
|
开发工具 git
git使用笔记-修改url并与远端库合并
git使用笔记-修改url并与远端库合并
42 1
|
7月前
|
Shell 开发工具 数据安全/隐私保护
git笔记
git笔记
67 0
|
存储 算法 开发工具
Git->git简介,git的常用命令,git命令的常用理论
Git->git简介,git的常用命令,git命令的常用理论
107 0
|
存储 开发工具 git
Git的简介以及基本使用
Git的简介以及基本使用
|
存储 Linux 开发工具
Git简介与工作原理:了解Git的基本概念、版本控制系统和分布式版本控制的工作原理
Git简介与工作原理:了解Git的基本概念、版本控制系统和分布式版本控制的工作原理
485 0
|
存储 开发工具 git
后端实践--git的简单使用 青训营
后端实践--git的简单使用 青训营
|
Shell 开发工具 git
[笔记]Git 介绍以及入门基本功能(二)
[笔记]Git 介绍以及入门基本功能(二)
|
Shell 网络安全 开发工具
git版本管理加合并笔记
git版本管理加合并笔记