Git 系统学习笔记(一)

简介: 版本控制是一种记录一个或若干个文件内容变化、以便将来查阅特定版本修订情况的系统。

版本控制


版本控制是一种记录一个或若干个文件内容变化、以便将来查阅特定版本修订情况的系统。


本地版本控制系统

很久以前就开发了许多本地版本控制系统、大多都是采用某种简单的数据库来记录文件的历次更新差异。

网络异常,图片无法展示
|

其中最流行的一种叫做 RCS、现今许多计算机系统上都还看得到他的踪影。RCS 的工作原理是在硬盘上保存补丁集、通过应用所有的补丁、可以重新计算出各个版本的文件内容。


集中化版本控制系统

让不同系统上的开发者协同工作、集中化版本控制系统应运而生。有一个单一的集中管理的服务器、保存所有文件的修订版本、而协同工作的人们都通过客户端连到这台服务器、取出最新的文件或者提交更新。

网络异常,图片无法展示
|

坏处

  • 单点故障
  • 无备份


分布式版本控制系统

在分布式版本控制系统中、客户端不只是提取最新版本的文件快照、而是把代码仓库完整地镜像下来、包括完整的历史记录

这么一来、任何一处协同工作用的服务器发生故障、事后都可以用任何一个镜像出来的本地仓库恢复。

网络异常,图片无法展示
|


Git 简史


Git 的设计目标

  • 速度
  • 简单的设计
  • 对非线性开发模式的强力支持(允许成千上万个并行开发分支)
  • 完全分布式
  • 有能力高效管理类似 Linux 内核一样的超大规模项目


直接记录快照、而非差异比较

Git 喝其他版本控制系统(Subversion) 的主要差别在于 Git 对待数据的方法。

从概念上来说、其他大部分系统以文件变更列表的方式存储信息、这类系统将它们存储的信息看作是一组基本文件喝每个文件随时间逐步累积的差异,称之为基于差异的版本控制

网络异常,图片无法展示
|

Git 不按照以上方式对待或保存数据、Git 更像是把数据看作是对小型文件系统的一系列快照。在 Git 中、每当你提交更新或保存项目状态时、它基本上就会对当时的全部文件创建一个快照并保存这个快照的索引。为了效率、如果文件没有修改、Git 则不再重新存储文件、只是保留一个指向之前存储的文件。Git 对待数据更像是一个快照流

网络异常,图片无法展示
|

Git 几乎与所有其他版本控制系统的重要区别就是在于这个地方。


近乎所有操作都是本地执行

在 Git 中绝大多数操作都只需要访问本地文件和资源、一般不需要来自网络上其他计算机的信息。


Git 保证完整性

Git 中所有的数据在存储前都计算检验和、然后以检验和来饮用。

Git 用以计算校验和的机制叫做 SHA-1 散列。是由 40 个十六进制自发组成的字符串、基于 Git 中文件内容或目录结构计算出来的。


Git 一般只添加数据

你执行的 Git 操作、几乎只往 Git 数据库中添加数据


三种状态

Git 有三种状态、你的文件可能处于其中的一种

  • 已修改
    表示修改了文件、但没保存到数据库中
  • 已暂存
    表示对一个已修改文件到当前版本做了标记、使之在下次提交到快照中
  • 已提交
    表示数据已经安全地保存在本地数据库中。

这会让我们的 Git 项目拥有三个阶段:工作区、暂存区、Git 目录。

网络异常,图片无法展示
|

工作区是对项目的某个版本独立提取出来的内容。这些从 Git 仓库的压缩数据库中提取出来的文件、放在磁盘供你使用或修改。

暂存区是一个文件、保存了下次将要提交的文件列表信息、一般在 Git 仓库目录中。按照 Git 的术语叫做“索引”。

Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。这是Git 中最重要的部分。从其他计算机克隆仓库时、复制的就是这里的数据。

基本的 Git 工作流程如下

  • 在工作区中修改文件
  • 将你想要下次提交的更改选择性地暂存、这样只会将更改的部分添加到暂存区。
  • 提交更新、找到暂存区的文件、将快照永久性存储到 Git 目录。




目录
相关文章
|
7月前
|
Shell Linux 开发工具
Git入门(windows系统)
Git入门(windows系统)
74 1
|
1月前
|
Linux 网络安全 开发工具
Git学习笔记(一):基础与应用
本文档详细介绍了如何将本地项目关联到Gitee上的空仓库并上传代码,以及如何验证本机与Git服务器的SSH连接。同时,还概述了Git的基本概念、安装步骤、初始配置、常见命令及如何配置多个SSH-Key,适用于初学者快速上手Git操作。
108 51
Git学习笔记(一):基础与应用
|
4月前
|
敏捷开发 存储 开发工具
版本控制系统的选择:Git与SVN的比较
【8月更文挑战第14天】Git和SVN都是优秀的版本控制系统,它们各自具有独特的优势和适用场景。在选择版本控制系统时,需要根据具体的项目需求、团队特点和开发模式来综合考量。对于需要分布式团队协作、高效处理大型项目或采用敏捷开发模式的团队来说,Git是一个更好的选择。而对于传统团队、集中式开发或简单项目来说,SVN可能更加合适。无论选择哪种版本控制系统,都应该充分利用其提供的工具和功能来提高代码质量和开发效率。
|
1月前
|
数据可视化 开发工具 git
如何解决 Git 版本控制系统中冲突的问题?
在Git版本控制系统中,冲突是指在合并或拉取操作时,两个或多个开发者对同一文件的同一部分进行了不同的修改,导致Git无法自动确定应该采用哪种修改。
35 1
|
6月前
|
缓存 开发工具 git
windows系统通过git上传代码
windows系统通过git上传代码
47 1
|
4月前
|
安全 Linux 开发工具
Git学习笔记
这篇文章是一份Git学习笔记,涵盖了Git的基本命令、工作流程、项目搭建、文件状态管理,以及如何使用码云和IDEA进行版本控制操作。
Git学习笔记
|
7月前
|
Shell 网络安全 开发工具
Git学习笔记
Git学习笔记
140 1
Git学习笔记
|
4月前
|
开发工具 git
【Mac 系统】解决git clone速度慢
本文提供了解决Mac系统上使用git clone时速度慢的问题的方法。
167 0
|
5月前
|
存储 安全 开发工具
Git学习笔记 三个区域、文件状态、分支、常用命令
理解并掌握这些概念和命令,对于有效地使用Git来管理项目源代码是至关重要的。Git的强大功能支持了复杂的开发工作流程,而良好的Git实践能够极大地提高团队的协作效率。随着实践的增多,对于Git更深层次的功能和最佳实践的理解也会随之增长,进一步加强你作为一个软件开发者的能力。
77 0
|
6月前
|
Linux 持续交付 开发工具
版本控制系统的选择:Git vs. Mercurial
【6月更文挑战第20天】Git vs. Mercurial: 两者都是流行的DVCS,Git由Linus Torvalds创建,以其速度和复杂分支管理著称,适合大型项目和有经验的开发者。Mercurial,由Matt Mackall开发,以其简洁命令行和易用性吸引初学者。Git社区更大,扩展更丰富,而Mercurial在某些场景下可能更直观。选择取决于项目需求、团队经验和偏好。