Git 快速入门:全面了解与安装步骤

一、关于Git

1.1 简介

Git 是一个开源的分布式版本控制系统,由 Linus Torvalds 于 2005 年创建,最初是为了更好地管理 Linux 内核开发而设计。

Git用于跟踪计算机文件的变化,特别是源代码文件。它允许多个开发者同时合作开发软件项目,同时保留完整的版本历史,确保代码的稳定性和可追溯性。

49bb3ffa-b778-4762-8dd9-6888e442f461

在 2005 年,Linus Torvalds 迫切需要一个新的版本控制系统来维护 Linux 内核的开发。于是他花了一个星期的时间,从头开始编写了一个革命性的新系统,并将其命名为 Git。二十年之后,该平台成为了这个竞争激烈领域里面当之无愧的领导者。

在全球范围内,大量的初创企业、集体企业和跨国公司,包括谷歌和微软,使用 Git 来维护它们软件项目的源代码。它们中有些公司拥有自己的 Git 项目,有些公司则通过商业托管公司使用 Git,比如 GitHub(成立于 2007 年),Bitbucket(成立于 2010 年)和 GitLab(成立于 2011 年)。其中最大的 GitHub 拥有 4000 万注册开发者 并在 2018 年被微软以 75 亿美元的天价收购。

Git 的吸引力之一在于它是开源的(就像 Linux 和 Android 那样)。但是还有其它开源的 VSC,其中包括协作版本系统(CVS)、SVN、Mercurial 和 Monotone,因此单凭这一点并不足以解释它的优点。

关于 Git 市场主导地位的最好体现是 Stack Overflow 对开发人员的调查。调查结果显示,2018 年 74289 名受访者中有 88.4% 使用了 Git(高于 2015 年的 69.3%)。最接近的竞争对手是 Subversion,普及率为 16.6%(低于 36.9%);Team Foundation 版本控制,从 2015 年的 12.2% 降为 11.3%;Mercurial 普及率为 3.7%(低于 7.9%)。事实上,Git 的优势如此之大,以至于 Stack Overflow 的数据科学家都懒得在 2019 的调查中提出这个问题。

开源人员使用什么来进行源码控制?

|           2018         |          2015          |
| ---------------------- | ---------------------- |
| Git: 88.4%             | Git: 69.3%             |
| Subversion: 16.6%      | Subversion: 36.9%      |
| Team Foundation: 11.3% | Team Foundation: 12.2% |
| Mercurial: 3.7%        | Mercurial: 7.9%        |
|                        | CVS: 4.2%              |
|                        | Perforce: 3.3%         |

| 74,298 受访者       | 16,694 受访者       |

数据来源:Stack Overflow 2018/2015 开发者调查报告

1.2 发展

Git 的发展历程可以追溯到 2005 年,其诞生与当时的一个开源项目——Linux 内核的版本控制问题密切相关。

1. 背景:Linux 内核的版本控制问题

在 Git 诞生之前,Linux 内核项目使用的是一个叫做 BitKeeper 的分布式版本控制系统。BitKeeper 是一种商业软件,免费提供给开源项目使用,但随着时间的推移,BitKeeper 与开源社区的关系变得紧张。2005 年,BitKeeper 的公司决定撤回对开源社区的免费使用授权,这让 Linux 内核的开发者面临了没有合适工具的困境。

大家都知道,Linux 内核是开源的,参与者众多,到目前为止,共有两万多名开发者给 Linux Kernel 提交过代码。

但在 1991 年到 2002 年期间,Linus Torvalds(Linux 内核的创始人)作为项目的管理员并没有借助任何配置管理工具,而是以手工方式通过 patch 来合并大家提交的代码。

倒不是说 Linus 喜欢手工处理,而是因为他对代码版本管理工具非常挑剔,无论是商用的 clearcase,还是开源的 CVS、SVN 都入不了他的法眼。

直到 2002 年,Linus 才相中了一款分布式版本控制系统 BitKeeper,虽然是商用的,但 BitKeeper 愿意让 Linux 社区免费使用,这让 Linus 非常开心和满意。

时间来到 2005 年,由于 BitKeeper 提供的默认接口不能满足 Linux 社区用户的全部需要,一位开发者在未经允许的情况下反编译了 BitKeeper 并利用了未公开的接口,于是 BitKeeper 的著作权拥有者Larry McVoy(拉里·麦沃伊)就气愤地收回了 Linux 社区免费使用的权力。

2. Git 的诞生 (2005 年)

为了应对这个问题,Linus Torvalds(Linux 内核的创始人)决定开发一个新的版本控制系统。

60c7638b9c4b9507d6c43d0f540b9947

​ Linus Torvalds

Torvalds 的目标是:

  • 高效地管理大型项目(如 Linux 内核)。
  • 提供分布式架构,支持多个开发者的协作。
  • 确保性能优越,能够快速处理大量的数据。
  • 强调代码历史的完整性,避免丢失历史数据。

结果,令人意想不到的是,Linus 只用了一个星期就用 C语言完成了第一个版本,嗯。。神就是神。并且给这个版本起了一个略带嘲讽意味的名字——Git(在英式英语俚语中表示“不愉快的人”)。

Torvalds 将它命为 Git 的原因有很多种说法,但实际上他只是喜欢这个词,这是他从披头士的歌曲《I’m So Tired》(第二节)中获得灵感。

源代码的自述文件有进一步的阐述:

The name "git" was given by Linus Torvalds when he wrote the very first version. He described the tool as "the stupid content tracker" and the name as (depending on your way)

如果选历史上最伟大的一次 Git 代码提交,那一定是这 Git 工具项目本身的第一次代码提交。这次代码提交无疑是开创性的,如果说 Linux 项目促成了开源软件的成功并改写了软件行业的格局,那么 Git 则是改变了全世界开发者的工作方式和写作方式

那么,Torvalds 对 Git 的巨大成功感到惊讶吗? “如果我说我能看到它即将成功,那绝对是在撒谎。我当然没有。但是 Git 确实把所有的基础都做对了。有什么事情可以做得更好吗?当然。但总的来说,Git 确实解决了一些与 VCS 有关的真正困难的问题。” 他说。

2005年4月7日,Linus Torvalds 宣布了 Git 的首次发布。Git 是一个分布式版本控制系统,其设计和实现从一开始就以高效性和灵活性为目标。

3. 初期的发展:从 Linux 内核到广泛采用

  • 2005 年:Git 发布后,首先应用于 Linux 内核的开发。Linux 内核开发者和其他开源项目很快就开始采用 Git。
  • 2005-2006 年:Git 在开源社区中逐渐获得了认可,成为管理大型项目的理想工具。与此同时,Git 的功能逐渐完善。

4. GitHub 的诞生 (2008 年)

GitHub 的出现极大推动了 Git 的普及。GitHub 是一个基于 Git 的托管平台,提供了一个易于使用的 Web 界面和协作功能,简化了 Git 的使用,并为开源项目提供了一个集中的托管和版本管理服务。2008 年,GitHub 成立,并迅速成为 Git 用户和开源项目的主要平台。

  • GitHub 引入了 Pull Requests(拉取请求)等社交编码功能,允许开发者轻松地提出代码修改建议并进行讨论。这一功能使 Git 在团队协作和开源项目中更具吸引力。

5. Git 的广泛普及

随着 GitHub 和其他平台(如 GitLab、Bitbucket)的兴起,Git 被越来越多的开发者和团队采用,成为开源项目和企业内部项目的标准版本控制工具。Git 支持分布式开发的特点,使得它特别适合现代软件开发中的分支管理、协作开发和持续集成等工作流。

6. Git 生态系统的发展

随着 Git 的普及,围绕 Git 形成了丰富的工具和生态系统:

  • GitLab:另一个流行的 Git 托管平台,支持 Git 的同时提供 CI/CD(持续集成/持续交付)功能。
  • Bitbucket:最初以支持 Mercurial 版本控制为主,后来转向了 Git,并成为 Atlassian 系列产品的一部分。
  • GitKraken:为 Git 提供了图形化界面,便于开发者操作和管理。

此外,许多 IDE 和文本编辑器(如 Visual Studio Code、JetBrains 的 IntelliJ IDEA 等)也集成了 Git 支持,进一步促进了其普及。

7. Git 的重要特性和发展

Git 逐步增加了许多新功能和优化,以下是一些重要特性:

  • Git LFS(Large File Storage) :支持大文件的版本控制。
  • Git Submodules:支持将一个 Git 仓库嵌套到另一个 Git 仓库中,适用于多仓库管理。
  • Git Flow:一种流行的 Git 工作流,特别适用于团队开发和发布管理。
  • 性能优化:Git 不断优化其在大规模项目中的性能,增强了处理速度和效率。

8. Git 的未来

Git 已经成为全球最广泛使用的版本控制工具,未来它可能继续增强与现代开发工具和工作流的集成,如 DevOps、持续集成/持续交付(CI/CD)等,同时可能引入更多的可视化和易用性功能。

1.3 功能特点

  1. 分布式:每个开发者都有整个代码仓库的完整拷贝,包括所有的版本历史。这意味着即使没有网络连接,开发者也可以查看项目的完整历史记录,并进行提交等操作。
  2. 快照存储:大多数版本控制系统存储的是文件的变化或差异,而 Git 存储的是文件在每次提交时的状态快照。这使得 Git 在处理大文件和复杂项目时更加高效。
  3. 分支管理:Git 的分支功能非常强大且灵活,可以轻松创建、合并和删除分支。这对于尝试新想法、修复bug或是开发新特性非常有用。
  4. 数据完整性:Git 使用 SHA-1 散列算法对文件内容和目录结构进行校验和计算,确保了文件的历史记录不被篡改。
  5. 性能:由于 Git 是分布式的设计,很多操作都是本地执行,因此速度非常快。
  6. 强大的社区和支持:作为一个开源项目,Git 拥有庞大的用户群和活跃的社区,提供了大量的文档、教程和工具支持。
  7. 跨平台:Git 可以运行在多种操作系统上,包括 Windows、Linux 和 macOS。

二、下载安装

2.1 官网下载

https://git-scm.com/downloads

image

下载得到安装包

image-20241129010040044

2.2 安装

双击安装包,一直点下一步就行

image

image

image

image

安装完成后在任意目录点击鼠标右键,如果能看到如下菜单则表示安装完成:

image

2.3 验证

在 Git Bash 中输入以下命令:

git --version
  • 如果 Git 已正确安装,您将看到类似如下的输出:

    git version 2.x.x
    

    其中 2.x.x​ 是 Git 的版本号,具体版本号会根据您安装的版本而不同。

  • 如果 Git 未安装或出现错误,您将看到类似如下的错误信息:

    bash: git: command not found
    

    或者:

    'git' is not recognized as an internal or external command
    

image

2.4 Git交互方式

Git 提供了多种交互方式,其中最常用的有 Git GUIGit Bash。这两者各有特点,适合不同的用户需求和使用场景。在安装 Git 时,上述两种方式通常会与 Git 一起自动安装。

1. Git GUI(图形用户界面)

Git GUI 是一个图形化的 Git 客户端界面,适合那些不习惯命令行操作或希望使用更直观界面进行 Git 操作的用户。

特点:

  • 图形化操作:用户可以通过图形界面执行大多数 Git 操作(如提交、分支管理、查看日志等),不需要输入命令。
  • 简单易用:适合初学者和不熟悉命令行的用户,提供了直观的界面来处理版本控制。
  • 功能丰富:虽然是图形界面,但几乎支持 Git 命令行中所有的基本功能,用户可以通过点击按钮或菜单完成操作,如提交、推送、拉取、合并等。
  • 适合小团队和个人使用:Git GUI 更适合需要快速操作的用户,适合不进行复杂命令行操作的小团队或个人项目。

主要功能:

  • 查看文件变更:可以轻松查看工作区中的文件与版本库中已提交内容的差异。
  • 提交和推送代码:可以通过简单的点击提交更改并推送到远程仓库。
  • 分支管理:可以方便地创建、切换、合并分支等。
  • 查看日志:查看提交历史和相关详细信息。

使用场景:

  • 新手用户:对于不熟悉命令行的用户,Git GUI 提供了更友好的操作界面。
  • 可视化操作:适合那些更偏向图形化界面,而非纯命令行用户。

image

2. Git Bash(命令行工具)

Git Bash 是 Git 提供的一个命令行工具,模拟 Unix shell 环境,用于执行 Git 命令。它是基于 Bash(一个常见的 Unix shell)环境的,提供了一个命令行界面,用户可以通过输入命令来与 Git 进行交互。

特点:

  • 命令行界面:用户通过输入 Git 命令来进行版本控制操作。相比图形界面,命令行方式通常更加灵活且功能强大。
  • 跨平台支持:Git Bash 可以在 Windows 上模拟 Linux 命令行环境,提供类似于 macOS 或 Linux 系统的体验。
  • 高效和强大:Git Bash 支持 Git 命令和常用的 Linux 命令,可以在命令行中执行文件操作、版本控制命令、网络操作等,效率高且适合批量操作。
  • 支持脚本和自动化:你可以编写 Bash 脚本来自动化某些 Git 操作,适用于开发中的复杂任务。

主要功能:

  • 执行 Git 命令:通过 Git Bash,你可以运行 Git 的所有命令,如 git commit​、git push​、git pull​、git merge​ 等。
  • 支持常用 Linux 命令:Git Bash 不仅支持 Git 命令,还提供了 Bash shell 的常用命令,如 ls​、cd​、rm​ 等,用于文件系统操作。
  • 跨平台一致性:Git Bash 为 Windows 提供了类似 Unix 的环境,使得 Windows 用户可以像在 Linux/macOS 上那样使用 Git。
  • 调试和脚本支持:开发人员可以编写 Bash 脚本来自动化一些常见的 Git 操作,提高效率。

安装:

Git Bash 是 Git 安装包的一部分。当你下载并安装 Git 时,Git Bash 会自动安装。安装后,你可以在开始菜单中找到“Git Bash”并打开它。

使用场景:
  • 命令行用户:Git Bash 对于熟悉命令行的开发人员来说更为高效,能够直接执行 Git 操作。
  • 跨平台开发:在 Windows 上,Git Bash 为开发者提供了一个类 Unix 环境,适合那些在跨平台开发中需要一致性体验的用户。
  • 自动化和批量操作:如果你需要批量处理或自动化 Git 操作,Git Bash 是一个更灵活的工具。

image

在本文中,简要介绍了 Git 的基本概念及其安装方法。Git 作为目前最流行的分布式版本控制系统,已广泛应用于开源项目及企业开发中。通过安装和配置 Git,您已经迈出了学习和使用版本控制的第一步。

在接下来的文章中,我们将深入探索 Git 的常用命令和工作流程,帮助您更好地理解如何使用 Git 来管理代码、协作开发和保持项目历史的清晰。

posted @ 2024-11-29 01:08  ccm03  阅读(38)  评论(0编辑  收藏  举报