Git 是一个开源的分布式版本控制系统,由 Linus Torvalds 于 2005 年创建,最初是为了更好地管理 Linux 内核开发而设计。
Git用于跟踪计算机文件的变化,特别是源代码文件。它允许多个开发者同时合作开发软件项目,同时保留完整的版本历史,确保代码的稳定性和可追溯性。
在 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 开发者调查报告
Git 的发展历程可以追溯到 2005 年,其诞生与当时的一个开源项目——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 社区免费使用的权力。
为了应对这个问题,Linus Torvalds(Linux 内核的创始人)决定开发一个新的版本控制系统。
Linus Torvalds
Torvalds 的目标是:
结果,令人意想不到的是,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 是一个分布式版本控制系统,其设计和实现从一开始就以高效性和灵活性为目标。
GitHub 的出现极大推动了 Git 的普及。GitHub 是一个基于 Git 的托管平台,提供了一个易于使用的 Web 界面和协作功能,简化了 Git 的使用,并为开源项目提供了一个集中的托管和版本管理服务。2008 年,GitHub 成立,并迅速成为 Git 用户和开源项目的主要平台。
随着 GitHub 和其他平台(如 GitLab、Bitbucket)的兴起,Git 被越来越多的开发者和团队采用,成为开源项目和企业内部项目的标准版本控制工具。Git 支持分布式开发的特点,使得它特别适合现代软件开发中的分支管理、协作开发和持续集成等工作流。
随着 Git 的普及,围绕 Git 形成了丰富的工具和生态系统:
此外,许多 IDE 和文本编辑器(如 Visual Studio Code、JetBrains 的 IntelliJ IDEA 等)也集成了 Git 支持,进一步促进了其普及。
Git 逐步增加了许多新功能和优化,以下是一些重要特性:
Git 已经成为全球最广泛使用的版本控制工具,未来它可能继续增强与现代开发工具和工作流的集成,如 DevOps、持续集成/持续交付(CI/CD)等,同时可能引入更多的可视化和易用性功能。
下载得到安装包
双击安装包,一直点下一步就行
安装完成后在任意目录点击鼠标右键,如果能看到如下菜单则表示安装完成:
在 Git Bash 中输入以下命令:
git --version
2.x.x
是 Git 的版本号,具体版本号会根据您安装的版本而不同。
Git 提供了多种交互方式,其中最常用的有 Git GUI 和 Git Bash。这两者各有特点,适合不同的用户需求和使用场景。在安装 Git 时,上述两种方式通常会与 Git 一起自动安装。
Git GUI 是一个图形化的 Git 客户端界面,适合那些不习惯命令行操作或希望使用更直观界面进行 Git 操作的用户。
特点:
主要功能:
使用场景:
Git Bash 是 Git 提供的一个命令行工具,模拟 Unix shell 环境,用于执行 Git 命令。它是基于 Bash(一个常见的 Unix shell)环境的,提供了一个命令行界面,用户可以通过输入命令来与 Git 进行交互。
特点:
主要功能:
git commit
、git push
、git pull
、git merge
等。ls
、cd
、rm
等,用于文件系统操作。安装:
Git Bash 是 Git 安装包的一部分。当你下载并安装 Git 时,Git Bash 会自动安装。安装后,你可以在开始菜单中找到“Git Bash”并打开它。
在本文中,简要介绍了 Git 的基本概念及其安装方法。Git 作为目前最流行的分布式版本控制系统,已广泛应用于开源项目及企业开发中。通过安装和配置 Git,您已经迈出了学习和使用版本控制的第一步。
在接下来的文章中,我们将深入探索 Git 的常用命令和工作流程,帮助您更好地理解如何使用 Git 来管理代码、协作开发和保持项目历史的清晰。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。