当前位置: 首页 > news >正文

Git分布式版本控制工具

1:目标

  • 了解Git基本概念

  • 能够概述git工作流程

  • 能够使用Git常用命令

  • 熟悉Git代码托管服务

  • 能够使用idea操作git

2:概述

2.1:开发中的实际场景

场景一:备份

小明负责的模块就要完成了,就在即将Release之前的一瞬间,电脑突然蓝屏,硬盘光荣牺牲!几个月 来的努力付之东流

场景二:代码还原

这个项目中需要一个很复杂的功能,老王摸索了一个星期终于有眉目了,可是这被改得面目全非的 代码已经回不到从前了。什么地方能买到哆啦A梦的时光机啊?

场景三:协同开发

小刚和小强先后从文件服务器上下载了同一个文件:Analysis.java。小刚在Analysis.java 文件中的第30行声明了一个方法,叫count(),先保存到了文件服务器上;小强在Analysis.java文件中的 第50行声明了一个方法,叫sum(),也随后保存到了文件服务器上,于是,count()方法就只存在于小刚的记 忆中了

场景四:追溯问题代码的编写人和编写时间!

老王是另一位项目经理,每次因为项目进度挨骂之后,他都不知道该扣哪个程序员的工资!就拿这 次来说吧,有个Bug调试了30多个小时才知道是因为相关属性没有在应用初始化时赋值!可是二胖、王东、刘 流和正经牛都不承认是自己干的!

2.2:版本控制器的方式

a、集中式版本控制工具 集中式版本控制工具,版本库是集中存放在中央服务器的,team里每个人work时从中央服务器下载代 码,是必须联网才能工作,局域网或互联网。个人修改后然后提交到中央版本库。 举例:SVN和CVS b、分布式版本控制工具 分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样工作的时候,无 需要联网了,因为版本库就在你自己的电脑上。多人协作只需要各自的修改推送给对方,就能互相看到对方的 修改了。 举例:Git

2.3、SVN

➢ 集中式版本控制工具

CVS 、SVN(Subversion)、VSS……

集中化的版本控制系统诸如 CVS 、SVN 等, 都有一个单一的集中管理的服务器, 保存 所有文件的修订版本, 而协同工作的人们都通过客户端连到这台服务器, 取出最新的文件或 者提交更新。多年以来, 这已成为版本控制系统的标准做法。

这种做法带来了许多好处, 每个人都可以在一定程度上看到项目中的其他人正在做些什 么。而管理员也可以轻松掌控每个开发者的权限, 并且管理一个集中化的版本控制系统,要 远比在各个客户端上维护本地数据库来得轻松容易。

事分两面, 有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕 机一小时, 那么在这一小时内, 谁都无法提交更新,也就无法协同工作。

2.4、Git

➢ 分布式版本控制工具

Git 、Mercurial 、Bazaar、Darcs……

像 Git 这种分布式版本控制工具, 客户端提取的不是最新版本的文件快照, 而是把代码 仓库完整地镜像下来 (本地库)。这样任何一处协同工作用的文件发生故障, 事后都可以用 其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作, 实际上都是一次 对整个文件仓库的完整备份。

分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:

  1. 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)

  1. 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)

GIT概述

  • Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。

  • Git 易于学习, 占地面积小, 性能极快。 它具有廉价的本地库, 方便的暂存区域和多个工作流分支等特性。 其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。

1.5:Git工作流程图

命令如下: 1. clone(克隆): 从远程仓库中克隆代码到本地仓库 2. checkout (检出):从本地仓库中检出一个仓库分支然后进行修订 3. add(添加): 在提交前先将代码提交到暂存区 4. commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本 5. fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。 6. pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于 fetch+merge 7. push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库

1、工作区:存放代码的地方

2、暂存区:临时存储,将工作区的代码让git知道,通过git add将代码放到暂存区

3、本地库:将暂存区的代码提交到本地库,就会生成对应的历史版本,这个代码就无法删除

4、远程库:将本地库的代码推送到远程库

1.6 :Git 和代码托管中心

代码托管中心是基于网络服务器的远程代码仓库, 一般我们简单称为远程库。

  • 局域网

  • GitLab:自己搭建 远程库

  • gogs: Gogs 是一款极易搭建的自助 Git 服务

  • 互联网

  • GitHub (外网),可能无法访问

  • Gitee 码云(国内网站)

http://www.lryc.cn/news/14644.html

相关文章:

  • Python爬虫(8)selenium爬虫后数据,存入sqlit3实现增删改查
  • 最全Linux驱动开发全流程详细解析(持续更新)
  • 华为OD机试 - 乱序整数序列两数之和绝对值最小 | 机试题算法思路 【2023】
  • 网上插画教学哪家质量好,汇总5大插画培训班
  • 对云原生集群网络流量可观测性的一点思考
  • 借力英特尔® Smart Edge,灵雀云 ACP 5G 专网解决方案获得多维度优化加速
  • 【Pytorch项目实战】基于PaddlenHub的口罩检测与语音提示
  • EasyExcel 让Excel导入导出更简单
  • 华为OD机试 - 需要广播的服务器数量 | 机试题算法思路 【2023】
  • 三次握手四次挥手详细解析面试常问
  • 组合由于继承
  • 大学计算机基础 知识点总结
  • 手撸React组件库前必须清楚的9个问题
  • 试用国内及国外AI绘图软件后的总结
  • DJI 无人机 Onboard SDK ROS 功能包demo运行
  • 揭开JavaWeb中Cookie与Session的神秘面纱
  • 2023-02-20 Qt 5.13.1 + OpenCV 4.5.4环境编译
  • 波次分拣系统
  • 【Servlet篇】Request请求转发详细解读
  • vector
  • LeetCode——104. 二叉树的最大深度
  • 漫画 | Python是一门烂语言?
  • 2023.2 新方案 java代码混淆 java加密 字符串加密
  • Swift 周报 第二十三期
  • android系统屏幕旋转角度,应用界面横竖屏,设备旋转角度,三者的区别以及使用。
  • 【华为云-开发者专属集市】DevCloud+ECS、MySQL搭建WordPress
  • Milvus 群星闪耀时|又一个小目标达成 :社区正式突破 15,000 星!
  • Qt信号与槽使用方法总结
  • SpringCloud alibaba-Sentinel服务降级策略
  • python常用函数——random()函数