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

news/2024/11/29 1:11:34/文章来源:https://www.cnblogs.com/ccdm/p/18575513

一、关于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 来管理代码、协作开发和保持项目历史的清晰。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/843187.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何解决 GoPro 13 拍摄 4K HDR 视频过热关机问题 All In One

如何解决 GoPro 13 拍摄 4K HDR 视频过热关机问题 All In One GoPro 过热关机如何解决 GoPro 13 拍摄 4K HDR 视频过热关机问题 All In OneGoPro 过热关机测试条件 室温 20 度 开启 HLG HDR 画面 16:9 分辨率 4K 帧率 60Hz 开启 GPS HyperSmooth: AutoBoost 比特位深: 10-Bit 比…

【模板】堆

【模板】堆 题目描述 给定一个数列,初始为空,请支持下面三种操作:给定一个整数 \(x\),请将 \(x\) 加入到数列中。 输出数列中最小的数。 删除数列中最小的数(如果有多个数最小,只删除 \(1\) 个)。输入格式 第一行是一个整数,表示操作的次数 \(n\)。 接下来 \(n\) 行,每…

FIFO 缓存算法很简单,但也可以聊挺久

作者:秦怀 1 简介 计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决,这句话就是整个计算机软件以及系统设计中的核心思想,而缓存对这一思想的一种实践。 缓存,总归会受到存储空间的限制,当缓存的空间不足的时候,如果在保持一定系统文档的情况下,还能兼顾到…

安装在C盘的软件移到其它盘

移动Office到D盘为例,Office默认安装位置为"C:Program FilesMicrosoft Office",只需要把“Microsoft Office”这个目录移动到C盘以外的盘符,我们这里以D盘为例。1)在D盘新建一个文件夹“Program Files”,然后按“Shift键不放,点重启电脑”进入安全模式;2)在安…

HCIP-01 RSTP原理与配置

生成树是一个用于局域网中消除环路的协议。运行该协议的设备通过彼此交互信息而发现网络中的环路,并对某些接口进行阻塞以消除环路。由于局域网规模的不断增长,生成树协议已经成为重要的局域网协议之一。 RSTP是生成树协议中的其中一个版本,它在STP的基础上,做了很多的改进…

Ripro V5日主题 v8.3 开心授权版 wordpress主题虚拟资源下载站首选主题模板

简介: RiPro主题全新V5版本,是一个优秀且功能强大、易于管理、现代化的WordPress虚拟资源商城主题。支持首页模块化布局和WP原生小工具模块化首页可拖拽设置,让您的网站设计体验更加舒适。同时支持了高级筛选、自带会员生态系统、超全支付接口等众多功能,无需依赖插件即可实…

从“三好”到“超三好”,智界新S7“卷”回来了!

11月26日,鸿蒙智行旗下智界新S7在华为Mate品牌盛典上市,并公布正式售价。智界新S7正式上市推出3款车型,智界新S7 Pro售价22.98万元,智界新S7 Max售价26.98万元起,智界新S7 Ultra售价31.98万元,首销期即刻下定,至高可享受价值35000元的权益。智界新S7将于12月1日开启交付…

yolo --- 模型训练

文件存放路径数据集标注软件pip install labelimg安装好后启动 labelimgOpen Dir:打开需要标注的图片路径 Change Save Dir:标注文件保存路径 View--->Auto Save mode:把这个勾上就不会每到下一张询问你一次按w可以显示画框的坐标十字 按D键可以切换到下一张 注意标注的标…

Linux物理内存管理

1 物理内存初始化——引导分配器memblockLinux内核启动时,先要初始化物理内存,这个阶段的作用主要是确定物理内存大小,哪些是可用的?哪些是预留的?完成这一阶段工作的是memblock引导分配器。内核启动时初始化物理内存的处理函数调用路径大概是(基于Linux 5.10.1源码查看):…

Threejs入门-灯光

在 Three.js 中,灯光是非常重要的元素之一,它能够模拟现实世界中的光照效果,帮助我们打造更加真实的三维场景。灯光的种类和配置方式可以影响整个场景的视觉效果,在不同的应用中,灯光的使用非常关键。 灯光概述 Three.js 提供了几种常见的光源类型:环境光(Ambient Light…

《Django 5 By Example》阅读笔记:p383-p387

《Django 5 By Example》学习第 14 天,p383-p387 总结,总计 5 页。 一、技术总结 1. asynchronous task(异步任务) 对于异步任务,书中使用的是 celery 和 RabbitMQ,这也是平时工作中的主流用法。 (1) celery Python 使用的 celery 包的名字也是 celery。 2. RabbitMQ (1) 拉…

思维模型:六顶思考帽,从不同角度思考问题,提升思维认知

思维模型:六顶思考帽思维模型,从不同角度思考分析问题,提升思维认知介绍 六顶思考帽(Six Thinking hats) ,由爱德华德博诺博士提出的一种思维认知模型工具。 它是通过不同颜色的帽子来代表六种不同的思维方式,帮助人们从多个角度全面分析和解决问题,提升认知。这六种颜…