探索使用Git进行版本控制
创作时间:
作者:
@小白创作中心
探索使用Git进行版本控制
引用
1
来源
1.
https://learn.microsoft.com/zh-cn/training/modules/develop-with-devops/3-explore-version-control-using-git
版本控制系统(VCS)有不同类型,但通常可分类为集中式和分布式。近年来(在某种程度上由于DevOps越来越受欢迎),后一类获得了非常广泛的普及,Git成为现代软件开发中事实上的标准。在我们的示例方案中,这个特定的VCS将是组织最合适的选择,特别是考虑到其打算使用GitHub作为其DevOps过渡的目标平台。本单元将探索如何将Git用作版本控制系统。
集中式与分布式版本控制
集中式版本控制系统(CVCS)和分布式版本控制系统(DVCS)都提供了管理和跟踪软件开发项目中的更改的能力。它们之间的主要区别与它们实现存储库和协作的方式有关。具体而言:
- 存储库位置:在集中式系统中,有一个集中的存储库实例,其中包含项目的完整历史记录。在分布式系统中,每个团队成员通常都会拥有整个存储库的一个功能齐全的本地副本,这可能包括其完整的版本历史记录。
- 网络连接:在集中式系统中,需要访问存储库的集中式实例来执行许多操作,包括更新和历史检索。在分布式系统中,所有活动都可以针对存储库的本地副本执行。
- 协作模型:在集中式系统中,开发人员先在通过网络连接到集中的存储库实例时签出文件,然后再进行修改并提交更改。这样可以防止更改成为其他人签出的文件。在分布式系统中,开发人员对存储库的本地副本进行更改并提交更改,这些更改在稍后的某个时刻与其他副本同步。
- 分支和合并模型:在集中式系统中,分支和合并通常需要与他人协作。在分布式系统中,分支可以在本地副本中独立创建并随后合并。
值得注意的是,虽然分布式模型不依赖于拥有中央存储库(在传统意义上而言),但通常会实现存储库的一个副本,该副本由GitHub、GitLab或Bitbucket等服务托管。此实例充当协作和同步的焦点。
Git术语
为了熟练使用Git,必须熟悉其术语。有些概念是Git所独有的,这将它与其他DVCS区分开来。最基本的Git术语包括:
- 工作树:一个目录结构,其中包含项目的所有文件。
- 存储库(通常称为repo):位于工作树顶层的目录,托管项目的所有文件以及这些文件的版本历史记录。
- 克隆:一种操作,用于在本地计算机上创建远程存储库副本以处理你有权访问的项目。
- 分叉:一种操作,用于创建远程存储库的GitHub托管副本以处理你无权访问的项目。如果你打算为其他人的项目做出贡献或创建你自己的此类项目版本,则通常会使用分叉。虽然你对原始存储库没有写入访问权限,但你可以完全管理你的分叉。
- 提交:在特定时间点对存储库中的文件所做的更改快照。提交用于记录和保存更改。
- 暂存区域:一个中间位置(不是存储库的一部分),对工作树中的文件的更改在提交之前会在该位置准备好。它允许开发人员选择他们要提交的更改。
- 分支:一系列已命名的关联提交。简单而言,分支表示项目的不同版本。通过使用分支,便可以同时处理项目的不同部分,而不会影响其主版本。一个分支内的最新提交称为“head”。初始化存储库时自动生成的默认分支称为“main”或“master”。
- 合并:将更改从一个分支(或提交)合并到另一个分支的过程。这会将更改从一个分支集成到另一个分支中。
- 对象:存储库中可用的四种实体类型之一。这些实体包括:表示各个文件的blob、表示工作树的树、表示工作树的特定版本的提交,以及标签(分配给单个提交的标签)。
- 哈希:一个自动生成的固定长度的唯一标识符,表示对象的内容。每当该对象发生更改时,其哈希也会更改。这使Git可以确定存储库中的哪些内容已更新。
- 远程库:对另一个存储库(非本地存储库)的引用,通常指向存储库的服务托管实例。这充当推送和拉取操作的默认位置。
- 拉取:一种操作,用于从远程存储库提取更改,并将这些更改合并到当前分支中。
- 推送:一种操作,用于将本地提交发送到远程存储库,从而使用本地所做的更改对该存储库进行更新。
- 提取:一种操作,用于从远程存储库检索更改,但不会自动合并这些更改。使用提取操作,便可以在应用合并之前进行审查。
- 拉取请求:基于Git的托管平台(如GitHub)中的一项功能,允许开发人员提议更改并请求将更改合并到目标分支中。
Git还有一组广泛的命令,使用户可以通过Linux Bash或Windows命令提示符等命令行界面完全实现和管理版本控制。也可以通过桌面应用程序(如GitHub Desktop)管理Git。基于Git的托管平台提供了一个Web界面,可促进与服务端存储库的交互。
Git与GitHub
如前所述,Git是一种多平台开源DVCS,它通过使用本地存储库促进协作,可与远程存储库同步。GitHub是一项基于云的服务,为Git存储库提供托管平台。它通过包含对以下各项的支持来扩展Git功能范围:
- 远程存储库:促进分布式团队之间的交互。
- 协作工具:提供问题、讨论、拉取请求、通知、标签、操作、分叉、wiki和项目等功能。
- 基于Web的接口:最大程度地减少使用Git命令的需求
- 分支保护:强制满足在发生合并前必须满足的条件(例如,完成拉取请求审查)。
本文原文来自微软官方文档
热门推荐
吊顶隔音施工流程及清洁方法详解
神农架大九湖:神秘湿地里的未解之谜
《蛟龙行动》:票房虽低,但品质值得一看
夜游昆明庾园,穿越古今的奇妙体验
老旧二手车因加装电池在维修厂自燃,车主起诉维修厂索要赔偿,律师助维修厂反诉胜诉
夯实算力基础设施,打造湖南“最强大脑”
“乡村振兴,有我!”浙江启动建筑师、工程师下乡行动
重庆大足石刻:孝经亭碑文背后的历史传奇
稀土,突发!
微信一键登录:OAuth2.0协议深度解析
你家的醋冻住了还能吃吗?
蒜苔炒鸡蛋,先炒蒜苔还是先炒鸡蛋?方法对了,入味又好吃!
秋冬打卡:宜昌到神农架最美公路
秋冬打卡神农架:从宜昌出发的完美攻略
秋冬打卡神农架+三峡红叶季:宜昌出发最全攻略
葛:生态小能手,你了解吗?
缺血性脑血管病:阿司匹林+氯吡格雷的最佳搭配方案
最新研究:阿司匹林和氯吡格雷,谁是心血管疾病防治的更优选择?
心血管健康:阿司匹林 vs 氯吡格雷,谁更胜一筹?
吃大蒜真的会降低阿司匹林效果吗?
ROE是什么意思?解析财务指标ROE的内涵与用途
肠息肉手术后多久恢复
肠息肉术后饮食指导:从禁食到软食的科学方案
果修科技教你轻松搞定iPhone听筒故障
iOS 17.1更新帮你搞定苹果手机听筒故障!
骨瘤手术后如何保持好心态?
小学数学1-6年级口算能力快速提升训练(含答案)
新辅助化疗:骨肉瘤患者的福音
骨瘤手术风险全面解析:从术前评估到术后康复
清明节与社会传媒互动