Git教程(一):Git简介

哈喽,各位小伙伴们好,欢迎关注GeekHour!
GeekHour专注于打造高知识密度的免费精品公益课程,
视频教程都放在B站了=> 一小时Git教程
网站新鲜出炉刚刚建好,还在逐步完善中,欢迎各位多提宝贵意见!
您的支持就是我最大的动力!

Git教程中的命令大全文档在这里了:GitCheetSheet文件下载地址

课程大纲

课程大纲

1. 什么是Git

Git(读音为/git/)是一个免费的、开源的、分布式的版本控制系统(Version Control System,简称VCS),
官网:git-scm.com, 由Linux之父Linus Torvalds编写。
Git是目前世界上最先进的分布式版本控制系统(没有之一)。它可以有效、高速地处理从很小到非常大的项目版本管理。

2. Git的历史和背景

同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。
Linux 内核开源项目有着为数众多的参与者。 在最初的十年,绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。
Linux内核并没有使用CVS或者SVN这样的版本管理软件,而是由Linus Torvalds手动收集来自贡献者的补丁,并维护每个版本,
但是,随着Linux内核的不断发展和社区的不断壮大,Linus发现手工管理代码已经不再适用了。
他需要一个更好的版本控制工具来管理Linux内核的开发。
到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。
BitKeeper 是一个商业软件,BitMover公司授权 Linux 内核开源社区可以免费使用 BitKeeper。
但是到了 2005 年,一个叫Andrew Tridgell的程序员(也是Samba的作者)试图破解BitKeeper的协议。
因为此事,BitMover公司收回了 Linux 内核社区免费使用 BitKeeper 的权力。BitMover公司同 Linux 内核开源社区的合作关系也就这样结束了。

在试图与BitKeeper斡旋无果后, Linus大神和Linux开源社区基于使用 BitKeeper 时的经验教训,决定开发自己的版本系统。
他们对新的系统制订了若干目标:

  • 速度
  • 简单的设计
  • 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
  • 完全分布式
  • 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)

于是,Linus用了十天时间写出了一个可以「自我管理」的分布式源码管理工具原型,并用打趣的态度命名为Git。

自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。
它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统。
Git很快就受到了广泛的欢迎和使用,成为了最流行的分布式版本控制工具。
许多大型公司和开源项目都在使用Git来管理他们的代码。Git也为Linus赢得了很多荣誉和奖项,包括2012年度技术创新奖和2018年度计算机图灵奖。
到2008年Github上线,Git的使用更加广泛,Github是一个基于Git的代码托管平台,可以让开发者在上面存储和管理代码,也可以让其他人查看和下载代码。
总之,Linus Torvalds的决定创建Git是一个历史性的时刻,它不仅推动了Linux内核的发展,还成为了开源社区的重要组成部分,并在软件开发中发挥着巨大的作用。

讽刺的是,十余年后的2016年5月,BitKeeper也决定开源。商业软件因为渐渐落后于时代而选择开源,这事不只发生在BitKeeper身上,还有很多其他软件也是如此。

2 Git的优势和特点

与传统的集中式版本控制系统相比,Git有很多优势和特点。它可以让我们更轻松地处理分支、合并和回滚更改。
这意味着我们可以更加灵活地进行开发和协作。例如,在一个项目中,可以使用分支来开发不同的特性,然后将这些特性合并到主分支中。

Git具有以下优势:

  • 分布式:每个开发者都可以拥有自己的本地仓库,并且可以在本地进行提交、分支和合并等操作,而不必依赖于中央服务器。Git的分布式特性使得每个开发者都可以在本地进行代码的更改和管理。这样做的好处是,即使出现了网络故障或服务器崩溃等问题,也不会导致代码丢失或不可恢复。因为每个开发者都有一份完整的代码仓库,如果服务器出现问题,可以从其他开发者的本地仓库中获取代码。
  • 快速:Git 的设计目标之一是速度,可以快速地进行提交、分支和合并等操作。
  • 强大:Git 提供了丰富的命令行工具和图形化界面,可以满足不同的开发需求。
  • 灵活:Git 可以与其他工具和服务进行集成,比如 GitHub、GitLab 和 Bitbucket 等。这些工具和服务可以帮助我们更好地管理项目源码,例如,可以使用这些工具和服务来进行代码的托管、协作和管理。

3 Git 和SVN的共同点和区别:

Git和SVN都是版本控制工具,但是它们之间有很多区别,下面我们就来一一讲解一下。
首先,我们先来看一下Git和SVN的共同点:

  • 都是版本控制系统
  • 都可以记录每次文件的修改
  • 都可以查看历史修改记录以及每次修改的内容、差异、作者、时间等信息
  • 都可以创建分支和标签以及对分支进行合并、删除等操作和管理

Git和SVN的主要区别在于以下几点:

  1. 分布式 VS 集中式

Git 是分布式版本控制系统,每个人都有一份完整的代码库。这意味着即使服务器宕机,每个开发者都有一份代码库可以继续工作,也可以通过本地提交和撤销等操作来追踪和回滚代码。而 SVN 则是集中式版本控制系统,所有代码都存在于一个中央服务器上,开发者需要从服务器上获取代码并将更改推送回服务器。

  1. 分支和合并

Git 的分支和合并功能更加强大和灵活,可以轻松创建和合并多个分支,以便同时进行多项开发工作,而且不会影响其他开发者的工作。SVN 也有分支和合并功能,但是它不像 Git 那样灵活,而且操作也相对繁琐。

  1. 速度
    Git 的速度比 SVN 快,尤其是在处理大型代码库时。Git 通过本地缓存和压缩来实现快速操作,而 SVN 需要从中央服务器上获取数据,因此速度相对较慢。

  2. 存储方式

Git 采用快照(Snapshots)方式存储代码库,每次提交都会生成一个快照,这种方式可以更好地保证数据的完整性和可靠性。而 SVN 则是基于差异(Differences)存储方式,每次提交只保存修改的部分,这种方式在处理大型文件时效率更高。

  1. 代码托管
    Git 可以与 GitHub、GitLab 和 Bitbucket 等代码托管服务进行集成,可以方便地进行代码的托管、协作和管理。而 SVN 则不支持代码托管,需要自己搭建服务器。

Git还可以跟踪代码的历史记录,并记录每个更改的作者、时间和描述信息。这使得团队协作和代码管理变得更加容易和安全。可以使用Git的日志功能查看提交历史记录,并找到每个更改的详细信息,包括更改的文件、更改的内容、作者、时间戳和提交消息。

除了上述优点外,Git还有很多其他的优势和特点。例如,Git有一个简单易用的命令行接口,可以轻松地进行代码的管理和操作。此外,Git还有很多工具和插件,可以帮助我们更好地管理代码。例如,可以使用Git GUI工具来可视化地管理代码,使用Git hooks来执行自动化任务,使用Git Submodule来管理依赖项等等。