20231204181129.png
第一章 Git版本控制系统
1、Git介绍
Git是一种分布式版本控制系统,广泛应用于软件开发和版本管理中。它于2005年由Linus Torvalds创建,旨在管理Linux内核开发。Git的设计目标是速度、数据完整性和支持分布式、非线性工作流程。
版本控制系统用于记录文件和代码的修改历史,并允许多人协同开发。Git通过跟踪文件的变化,记录每次修改的详细信息,并将这些修改保存在一个称为"仓库"(repository)的数据库中。使用Git,开发人员可以轻松地查看、比较和恢复先前的版本,合并不同人员的修改,并在需要时创建分支进行并行开发。
2、为什么要用Git
- 版本控制:Git是一种分布式版本控制系统,它可以跟踪和记录文件的修改历史。这意味着您可以轻松地查看、比较和恢复先前的版本。无论是修复错误、还原代码还是回滚到以前的状态,Git使得管理和控制代码版本变得非常简单和可靠。
- 并行开发和团队协作:Git的分支和合并功能非常强大。您可以创建分支来独立开发某个功能或修复某个问题,而不会影响主代码库。开发人员可以并行工作,每个人都可以在自己的分支上进行开发和实验,然后将更改合并到主代码库中。这样可以提高团队的协作效率,并减少代码冲突。
- 分布式开发:Git是一种分布式版本控制系统,每个开发者都可以拥有完整的代码仓库副本。这意味着即使在没有网络连接的情况下,开发人员仍然可以继续工作和提交更改。这种分布式的特性使得团队成员可以在独立的环境中工作,而不会对其他人造成干扰。
- 安全性和完整性:Git使用SHA-1哈希算法对数据进行校验,以确保数据的完整性和安全性。每个提交都有唯一的哈希值,任何对文件的修改都会被追踪和记录。这使得Git非常可靠,并且能够检测到任何潜在的数据损坏或篡改。
- 开源和社区支持:Git是一个开源项目,拥有庞大的开发者社区和广泛的支持。这意味着您可以轻松地获取有关Git的文档、教程和资源,并且可以从社区中获得帮助和支持。
3、SVN和Git的区别
Git和SVN(Subversion)是两种常见的版本控制系统,它们在设计和使用上有一些重要区别:
分布式 vs 集中式:Git是一种分布式版本控制系统,每个开发者都可以拥有完整的代码仓库副本,并且可以在本地进行提交、分支和合并等操作。而SVN是一种集中式版本控制系统,所有的代码仓库和版本历史都存储在中央服务器上,开发者需要通过网络连接来进行提交、更新和分支操作。
工作方式:在Git中,开发者将代码仓库完整地克隆到本地,并在本地进行开发和修改。开发者可以在没有网络连接的情况下进行工作,并在需要时将更改推送到远程仓库。而在SVN中,开发者只是在本地对文件进行修改,然后将更改提交到中央服务器。
分支和合并:Git的分支和合并功能非常强大和灵活,开发者可以轻松地创建、切换和合并分支,使得并行开发和团队协作变得更加容易。而SVN的分支和合并相对较为复杂,需要在中央服务器上进行操作,并且容易出现冲突和问题。
性能:由于Git是一种分布式系统,每个开发者都有一个完整的代码仓库副本,因此Git在处理大型项目和庞大历史记录时通常比SVN更快速和高效。
数据完整性:Git使用SHA-1哈希算法对数据进行校验,以确保数据的完整性和安全性。每个提交都有唯一的哈希值,可以对文件内容进行完整性检查。而SVN没有类似的数据完整性校验机制。
总体而言,Git强调分布式、并行开发和灵活性,适用于大型项目和团队协作。SVN则更加集中式,适用于较小的项目和团队。选择使用哪种版本控制系统取决于项目的需求、开发团队的规模和工作流程的特点。
4、Git的工作区、暂存区、版本库介绍
在Git中,有三个关键的工作区域,它们分别是工作区(Working Directory)、暂存区(Staging Area)和版本库(Repository)。
- 工作区(Working Directory):
工作区是指存放项目实际文件的目录,也就是我们在电脑上看到的项目文件夹。在工作区中,我们可以进行文件的编辑、添加、删除等操作。 - 暂存区(Staging Area):
暂存区是介于工作区和版本库之间的一个中间区域。当我们在工作区进行了文件的修改后,我们可以使用git add
命令将修改的文件添加到暂存区。暂存区相当于一个缓冲区,用于暂时存放待提交的修改。 - 版本库(Repository):
版本库是Git中最重要的部分,它包含了项目的完整历史记录和元数据信息。版本库一般存储在项目根目录下的.git
文件夹中。版本库中包含了暂存区的内容以及之前的提交历史。在版本库中,我们可以执行各种操作,如提交修改、创建分支、合并分支等。
Git的基本工作流程如下:
- 在工作区中进行代码的修改和编辑。
- 使用
git add
命令将修改的文件添加到暂存区。 - 使用
git commit
命令将暂存区的内容提交到版本库中,形成一个新的提交记录。 - 可以在版本库中进行分支操作、合并操作等。
- 重复上述步骤,进行新的修改、提交和操作。
通过这种工作流程,Git可以有效地跟踪和管理文件的修改历史,并支持多人协同开发和并行工作。
5、Windows、Centos、Ubantu安装git
5.1 Windows安装Git
下载地址:
https://github.com/git-for-windows/git/releases/download/v2.43.0.windows.1/Git-2.43.0-64-bit.exe
5.2 CentOS安装Git
yum install git -y
5.3 Ubantu安装Git
# add-apt-repository ppa:git-core/ppa # apt update; apt install git
6 本地仓库初始化
git init
7 目录解析
[root@k8s-master01 .git]# ls -l
总用量 32
drwxr-xr-x 2 root root 4096 12月 4 14:27 branches
-rw-r--r-- 1 root root 92 12月 4 14:27 config
-rw-r--r-- 1 root root 73 12月 4 14:27 description
-rw-r--r-- 1 root root 23 12月 4 14:27 HEAD
drwxr-xr-x 2 root root 4096 12月 4 14:27 hooks
drwxr-xr-x 2 root root 4096 12月 4 14:27 info
drwxr-xr-x 4 root root 4096 12月 4 14:27 objects
drwxr-xr-x 4 root root 4096 12月 4 14:27 refs
[root@k8s-master01 .git]#
在给出的输出中,显示了一个名为".git"的目录及其内容。这是一个典型的Git版本控制系统的存储库目录。下面是每个目录的简要说明:
- branches:该目录存储了存储库中的分支信息。在这个例子中,该目录为空,可能是因为没有创建或使用分支。
- config:这是Git存储库的配置文件。它包含了与存储库相关的配置选项,如用户名、电子邮件地址、远程存储库等。
- description:此文件包含对存储库的描述信息。它可以是一个简短的文本文件,用于描述存储库的目的或内容。
- HEAD:这是一个符号链接ÿ