【Git】什么是Git,如何获取Git

586 阅读7分钟

什么是Git

git是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作(也就是 Linux的创始人),于2005年以 GPL发布。

最初目的是为更好地管理 Linux内核开发而设计。

应注意的是,这与 GNU Interactive Tools(一个类似 Norton Commander界面的文件管理器)不同。

git最初的开发动力来自于 BitKeeper和 Monotone。

git最初只是作为一个可以被其他前端(比如 Cogito或 Stgit)包装的后端而开发的,但后来 git内核已经成熟到可以独立地用作版本控制

很多著名的软件都使用git进行版本控制,其中包括Linux内核、X.Org服务器和OLPC内核等项目的开发流程

一些历史

自2002年开始,林纳斯·托瓦兹决定使用 BitKeeper作为 Linux内核主要的版本控制系统用以维护代码。

但因为 BitKeeper为专有软件,这个决定在社区中长期遭受质疑。

在Linux社区中,特别是理查德·斯托曼与自由软件基金会的成员,主张应该使用开放源代码的软件来作为 Linux内核的版本控制系统。

林纳斯·托瓦兹曾考虑过采用现成软件作为版本控制系统(例如 Monotone),但这些软件都存在一些问题,特别是性能不佳。

现成的方案,如 CVS的架构,也曾受到林纳斯·托瓦兹的批评

2005年,安德鲁·垂鸠写了一个简单程序,可以连接 BitKeeper的存储库,BitKeeper著作权拥有者 拉里·麦沃伊认为 安德鲁·垂鸠对 BitKeeper内部使用的协议进行逆向工程,决定收回无偿使用 BitKeeper的许可。

Linux内核开发团队与 BitMover公司进行磋商,但无法解决他们之间的歧见。

林纳斯·托瓦兹决定自行开发版本控制系统替代 BitKeeper,以十天的时间编写出了 git的第一个版本。

Git的主要功能

git是用于 Linux内核开发的版本控制工具,与 CVS、Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。

git的速度很快,这对于诸如 Linux内核这样的大项目来说自然很重要。

git最为出色的是它的合并追踪(merge tracing)能力。

实际上内核开发团队决定开始开发和使用 git来作为内核开发的版本控制系统的时候,世界上开源社区的反对声音不少,最大的理由是 git太艰涩难懂,从 git的内部工作机制来说,的确是这样。

但是随着开发的深入,git的正常使用都由一些友善的命令来执行,使 git变得非常好用。

现在,越来越多的著名项目采用 git来管理项目开发,例如:wine、U-boot等

作为开源自由原教旨主义项目,git没有对版本库的浏览和修改做任何的权限限制,通过其他工具也可以达到有限的权限控制,比如: gitosis、CodeBeamer MR。

原本 git的使用范围只适用于 Linux/Unix平台,但在 Windows平台下的使用也日渐成熟,这主要归功于 Cygwin、msysgit环境,以及 TortoiseGit这样易用的 GUI工具。

git的源代码中也已经加入了对 Cygwin与 MinGW编译环境的支持且逐渐完善,为 Windows用户带来了福音。

什么是版本控制

git作为一个版本控制工具,我们在使用之前可以简单的先理解一下什么是版本控制。

其实版本控制的问题在生活中很频繁的会碰到,比如换了个新环境之后的家具如何摆放;

可能移来移去还是觉得一开始的时候最舒服,这样每一次移动家具的操作就可以理解为是一次版本迭代。

而工作中也经常会碰到版本控制的问题,老板或同事让你修改方案啊 添加或删除一些功能啊.......

这些事情做起来毫无疑问的都会产生不满和耗费精力,进而影响心情。

而对程序员来说,修改代码更是家常便饭;如果没有一个版本控制工具来解决这个问题,那可真是痛苦。

git就是这样一个工具,使用 git可以让我们很轻松的进行版本的迭代,如果碰到还是第一个版本比较好这种令人困惑的问题 也可以直接回滚。

工作中很少会碰到一个人去开发项目的情况,更多的时候是多人开发;

一个人开发都难免会碰到问题,多人开发可想而知问题只会更多。

而使用 git可以有效的组织并行开发、明晰各自工作的进度 、降低人为的错误、统计工作量、提高开发效率.....

简而言之,如果你不会 git或其他同类型工具 在工作中可能会浪费许多本应该休息的时间。

主流的版本控制器有如下这些:

  • Git
  • SVN (Subversion)
  • CVS (Concurrent Versions System)
  • VSS (Micorosoft Visula SourceSafe)
  • TFS (Team Foundation Server)
  • Visual Studio Online
  • ......

虽然同为版本控制器,但工作模式却有所不同,就单独拿 Git和 SVN来说一下吧

SVN使用的是 集中版本控制模式,这种版本控制模式下,所有的版本数据都存放在一台服务器上;

开发者们可以从服务器上同步更新或上传自己的修改,这种模式有好处也有弊端。

好处是较为安全,为什么说安全呢 这个到下面提另一种模式时再说明,弊端是单点故障 如果服务器损坏那问题就很严重了,且无法在离线情况下工作 需要联网。

GIt使用的是 分布式版本控制模式,这种模式下版本数据会同步到每一个开发者的本地仓库;

有弊端,当然更多的是好处。使用这种模式 开发者可以在本地查看完整的版本数据,不需要联网同步服务器中的版本数据也能够工作。修改代码后只需要本地提交即可 联网后会自动 push到相应的服务器和用户,就算服务器挂了 也不会有很严重的情况发生 开发者手上也有备份。

弊端自然是不太安全,每个开发者的电脑中都是一个完整的版本库,造成的隐患可想而知.....

这也是为什么现在一些公司还在用 SVN的原因。

如何获取 Git

好了,吹了这么久 git也该步入正题了,了解完这些枯燥的理论知识后我们来看看如何获取 git

下载 git最好是通过官网下载:git官网

但官网下载可能会碰到下载速度非常慢的情况,如何解决呢?

可以通过访问镜像 来提高下载速度节省一定的时间

淘宝镜像

安装 git很简单,如果是 Windows无脑下一步即可

可能有的朋友之前下载过 git,这种情况需要你先清理干净才可以进行安装也就是将 git相关的环境变量删除

在安装 git时我们可以指定默认的文本编辑器

可以看到有 vim 有np++甚至 Vscode,可以根据自己的喜好来进行选择。

如何都没有接触过 可以尝试使用 vim,这有助于你的 Linux学习;(这也是 git默认使用的文本编辑器)

关于 vim可以看看我之前在 Linux时写的这篇文章,可谓是十分详细了。

安装完成后我们能够看到如上三个程序,此时你在桌面空白处右击也会看到 Git GUI 以及Git Bash。

如果没有你也可以自己加上去,火绒就支持该功能

除此之外在选中文件夹时右击也可以看到Git GUI 以及Git Bash。

首先来解释一下这三个新增的程序是什么

  • Git Bash:Unix与 Linux命令行,使用最多。
  • Git CMD:Windows风格的命令行
  • Git GUI:图形界面的 Git,初学者不建议使用;尽量先熟悉一下常用命令

好了,到这里安装就结束了 如果明天有空的话应该会写一些 git的简单使用。


放松一下眼睛

原图P站地址

画师主页