一、版本控制:
版本控制是一种系统,用于管理文件(尤其是代码文件)的更改历史,以便你能够回顾特定版本的文件。它对于任何进行文本文件更改的人来说都是非常重要的工具,尤其是对于软件开发者来说。
版本控制是软件开发和文档管理中的一个关键概念,它涉及到跟踪和管理文件的变更历史。以下是版本控制系统的三种主要类型:
1.1 本地版本控制系统:
这种系统通常采用简单的数据库来记录文件的所有变更。例如,RCS(Revision Control System)就是一种本地版本控制系统,它通过在硬盘上保存补丁集(即文件修订前后的差异)来工作。
1.2 集中化的版本控制系统(Centralized Version Control Systems, CVCS):
这类系统如CVS(Concurrent Versions System)、Subversion(SVN)和Perforce,它们有一个单一的集中服务器来存储所有文件的版本,而多个客户端则从这个中心仓库检出文件。这种模式提供了更好的项目监控和控制,但缺点是如果中央服务器出现故障,则无法进行历史版本访问和协作。
1.3 分布式版本控制系统(Distributed Version Control Systems, DVCS):
在这类系统中,如Git、Mercurial和Bazaar,每个参与者不仅从中央仓库检出文件,还会完整地复制一份仓库。这意味着即使没有网络连接,你也可以在本地进行提交、查看历史记录和创建分支等操作。当重新联网后,你可以将本地仓库的变更推送到远程仓库。这种分布式特性极大地提高了系统的容错性和灵活性。
版本控制系统的主要功能包括:
跟踪变更:记录谁、何时以及为什么对文件进行了更改。
版本历史:允许用户查看文件的旧版本,并比较不同版本之间的差异。
分支和合并:允许开发者创建独立的开发路径(分支),并在完成后将这些更改合并回主分支。
协作:允许多个开发者同时工作在同一个项目上,而不会相互干扰。
恢复:如果需要,可以将文件或整个项目恢复到之前的某个状态。
版本控制系统是现代软件开发不可或缺的工具,它不仅提高了开发效率,还确保了代码质量和团队协作的顺畅。
二、GIT介绍
2.1 GIT 历史
1991 - 2002年:早期版本控制
- Linux 内核项目最初使用的是一种非正式的版本控制方法,主要是通过 tarball 和 patches 的方式进行代码分发和合并。
2002 - 2005年:BitKeeper 的使用
- 为了更有效地管理 Linux 内核的开发,Linux 社区开始使用 BitKeeper,这是一个分布式版本控制系统,它允许开发者们更高效地协作。
2005年:BitKeeper 的争议与 Git 的诞生
- 2005年,由于一系列争议,BitKeeper 的免费使用权被收回。这促使 Linux 社区,尤其是 Linus Torvalds(Linux 的创始人)开始寻找或创建一个新的版本控制系统。
- Linus Torvalds 决定自己开发一个新的版本控制系统,以满足 Linux 社区的需求。他在一周内设计了 Git 的原型,并在接下来的几个月里,与社区成员一起完善了 Git。
2005年以后:Git 的快速发展
- Git 在2005年4月发布,很快就因其速度、数据完整性和对非线性开发的支持(通过成千上万个并行分支)而受到欢迎。
- Git 的设计哲学强调性能、简单性、非线性开发的支持和完全的分布式。
- Git 的开源性质和强大的社区支持使其迅速成为最受欢迎的版本控制系统之一。
2008年:GitHub 的成立
- GitHub 是一个基于 Git 的代码托管平台,它于2008年成立。GitHub 提供了一个易于使用的界面,使得 Git 的使用更加普及,并促进了开源项目的发展。
至今:Git 的主导地位
- 随着时间的推移,Git 已经成为最流行的版本控制系统,广泛应用于软件开发、文档管理和其他需要版本控制的领域。
- Git 社区持续发展,不断有新的工具和插件被开发出来,以增强 Git 的功能和易用性。
2.2 GIT特点
1. 近乎所有操作都是本地执行(离线操作)
- Git 的大多数操作都在本地完成,这意味着你几乎不需要网络连接就可以进行提交、查看历史、创建分支等操作。这不仅提高了操作的速度,而且也使得工作在网络连接不稳定或没有网络的环境下成为可能。
- 由于操作主要在本地进行,你可以随时进行代码的提交和版本控制,然后在有网络连接时再将更改推送到远端仓库。
2. 时刻保持数据完整性(SHA-1 哈希值)
- Git 通过使用 SHA-1 哈希算法来确保代码历史的完整性和一致性。每次提交都会生成一个唯一的哈希值(称为“提交ID”),这个哈希值是基于文件的内容、提交时间、作者信息等生成的。
- 这种机制使得更改历史几乎不可能被篡改或损坏,无论是意外还是故意的,因为哈希值的任何微小变化都会导致一个完全不同的提交ID。
3. 文件流转的三个工作区域
(1)工作目录:这是你当前正在工作的文件的实际目录。它从Git仓库的一个版本中提取了文件的实际内容,放在你的文件系统中供你使用或修改。
(2) 暂存区域(索引或暂存区):当你完成了对工作目录中文件的修改后,下一步是将这些更改添加到暂存区域。这个区域包含了下一次要提交的文件快照,实际上它是你下次提交时项目的状态。
(3) 本地仓库:完成以上步骤后,你可以执行提交操作,将暂存区域的更改永久记录到本地仓库的历史记录中。这个本地仓库包含了项目的所有历史版本,每个版本都通过一个独特的提交ID标。
2.3 工作目录,暂存区,和本地仓库三者之间关系
- 你在工作目录中修改文件。
- 你选择你想要的文件进行下一次提交,将这些更改添加到暂存区。
- 你执行提交操作,将暂存区中的更改永久地记录到本地仓库的历史中。
- 最后,当你准备好与他人共享你的更改时,你可以将这些提交从你的本地仓库推送到远端仓库。
三、GIT的安装与配置
3.1 安装GIT
下载地址:https://git-scm.com/,选择自己电脑对应的版本
3.2 查看GIT是否安装
在命令行下执行 git --version
单击右键,查看是否有git bash 命令
3.3 配置GIT
用于设置Git的全局用户名和电子邮件地址。这些信息将用于在提交的commit log中标识您的身份。(第一次使用的时候配置,后面就不需要配置了)
git config --global user.name "teduweb" //(用户名) git config --global user.email "web@tedu.com" //(用户邮箱)
要查看Git配置信息,可以使用以下命令:
git config --list
这个命令将会列出所有当前Git配置的键值对,包括用户名称和电子邮件地址。如果想要查看全局配置,可以添加--global标志:
git config --global --list
这将只显示全局配置信息,这些信息适用于系统中所有的Git仓库。如果要查看特定仓库的配置信息,需要在该仓库的目录下运行不带--global标志的命令。
另外,如果只想查看特定的配置项,例如用户名,可以运行:
git config user.name
或者,如果您想查看电子邮件配置:
git config user.email
请注意,如果在同一键下有多个配置(例如,局部和全局),git config --list会列出所有的配置,而git config <key>将仅显示找到的第一个配置值。
3.4 初始化GIT仓库
使用命令进行初始化,会生成一个.git的隐藏文件,用来记录所有的版本
git init
命令执行后,会出现一个半透明的文件
如果遇到看不到的情况,需要将隐藏文件进行勾选
📝大佬觉得本文有所裨益,不妨轻点一下👍给予鼓励吧!
❤️❤️❤️本人虽努力,但能力尚浅,若有不足之处,恳请各位大佬不吝赐教,您的批评指正将是我进步的动力!😊😊😊
💖💖💖若您认为此篇文章对您有所帮助,烦请点赞👍并收藏🌟,您的支持是我前行的最大动力!
🚀🚀🚀任务在默默中完成,价值在悄然间提升。让我们携手共进,一起加油,迎接更美好的未来!🌈🌈🌈