从本质彻底精通Git——4个模型1个周期1个史观1个工作流

本文详细介绍了Git的核心概念,包括Git与SVN的区别、Git的分布式特性、SHA-1散列原理以及Git的区域模型、分支模型、对象模型和三棵树模型。通过学习,可以深入了解Git的分支管理和工作流程,提升Git的使用效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是Git?

  Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

  Git是Linus Torvalds为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

二、分布式VS集中式

  VisualSVN、TortoiseSVN、Bazzar为集中式版本控制系统,而Mercurial、Git、Bitkeeper为分布式版本控制系统。

  1. 集中式版本控制

    优点:可以对具体的文件或目录进行权限控制,有全局的版本号。

    缺点:所有操作都需要联网中心服务器。

  2. 分布式版本控制

    优点:

      i. 分支管理。

      ii. 完整性和安全性更高,各客户端保留有完整的版本库。

      iii. 绝大部分操作都是本地化的,支持离线。

    缺点:

      i. 对版本库的目录和文件无法做到精细化的权限控制。

      ii. 无全局性的版本号。

  通过以上分析的集中式和分布式版本控制的优缺点,我们就能总结出以Git为代表的分布式版本控制和以SVN为代表的集中式版本控制之间的区别。

  3. Git和SVN的区别

  • 最核心的区别当然是分布式和集中式。
  • 处理数据的方式不同,Git以元数据方式存储数据,SVN按照文件存储,对应的取出数据方式也不一样。
  • 分支管理或分支模型(下文会详解)。
  • 全局性的版本号。
  • 数据的完整性和安全性,分布式的更好。

三、常用的Git解决方案和代码托管平台

  1.开源软件解决方案:Gitea、GitLab

  2.代码托管平台:码云(Gitee)、码市(Coding)、GitHub、GitLab、Bitbucket

四、Git的基石SHA-1

  In cryptography, SHA-1 (Secure Hash Algorithm 1) is a cryptographichash function which takes an input and produces a 160-bit (20-byte) hash value known as a message digest – typically rendered as ahexadecimal number, 40 digits long. It was designed by the UnitedStates National Security Agency, and is a U.S. Federal InformationProcessing Standard.

  以上摘自维基百科,主要说明了SHA是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。SHA-1长度为20字节,160位,熟悉网络编程的都知道,4位可以转换成一个十六进制的数字,所以一个SHA-1散列可以展示为40长度的十六进制的数字。

  SHA-1的计算方法为代码:

 1 //Note: All variables are unsigned 32 bits and wrap modulo 232 when calculating
 2 
 3 //Initial variables:
 4 h0 := 0x67452301
 5 h1 := 0xEFCDAB89
 6 h2 := 0x98BADCFE
 7 h3 := 0x10325476
 8 h4 := 0xC3D2E1F0
 9 
10 //Pre-processing:
11 append the bit '1' to the message
12 append k bits '0', where k is the minimum number >= 0 such that the resulting message
13     length (in bits) is congruent to 448(mod 512)
14 append length of message (before pre-processing), in bits, as 64-bit big-endian integer
15 
16 //Process the message in successive 512-bit chunks:
17 break message into 512-bit chunks
18 for each chunk
19     break chunk into sixteen 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值