0
点赞
收藏
分享

微信扫一扫

火山引擎VeDI数据技术分享:两个步骤,为Parquet降本提效

潇湘落木life 2024-07-31 阅读 27
githubgitlab

分布式版本控制系统:Git、GitHub与GitLab简介

一、Git概述

Git是一个分布式版本控制系统,由Linus Torvalds为Linux内核开发而创建。它允许开发者跟踪和管理代码的变更,并支持多人协作。作为服务系统,Git被广泛使用于各种软件开发项目中,其中最著名的应用实例就是GitHub平台。

Git的主要功能包括:

  1. 版本控制:能够跟踪代码变更并回滚至任何历史版本。
  2. 分支管理:支持多分支开发,方便合并与协作。
  3. 分布式特性:每个开发者都可在本地操作,不依赖中央服务器。
  4. 团队协作:优化多人项目协作流程。

二、Git的功能特性

Git专注于文件的整体变化,并将每次提交的文件保存为快照,使用SHA-1算法确保数据完整性。其主要操作包括:

  1. 克隆数据库版本:从服务器下载代码库到本地。
  2. 提交代码:在本地分支上进行代码提交。
  3. 合并分支:在本地或从服务器合并分支。
  4. 拉取合并分支:获取服务器上的最新版本并与本地合并。
  5. 代码冲突解决:通过pull命令解决冲突后提交补丁。

三、GitHub社区

GitHub是一个以Git为基础的开源及私有软件项目托管平台。它为用户提供了创建和管理Git仓库的空间,是全球最大的开源代码社区之一,拥有超过140万开发者用户。GitHub的特色在于简化了项目分叉(fork)和代码贡献(pull request)的过程,使得为项目贡献代码变得异常简单。

四、GitLab

GitLab是一个基于Git的开源项目管理软件,它不仅提供代码管理功能,还构建了完整的Web服务平台。GitLab支持在群组(group)和项目(project)两个层级上管理代码和文档,其中群组可以包含多个项目,而每个项目又可包含多个分支。作为一个一站式DevOps平台,GitLab旨在加速和优化软件开发的整个生命周期。

总结而言,Git作为一个强大的分布式版本控制系统,为软件开发提供了坚实的基础。而GitHub和GitLab等平台则进一步拓展了Git的功能,为全球开发者社区提供了便捷的代码托管、协作和管理服务。

五、集中式与分布式版本控制系统的比较

1. 集中式版本控制系统(CVCS)概述:

集中式版本控制系统,例如SVN(Subversion),将代码库存储在单一的中央服务器上。团队成员通过客户端连接到这个中央服务器来获取代码和提交更改。这种方式使得所有开发者都在同一个代码库上工作,且必须与服务器通信才能访问历史记录和获取当前代码。因此,任何服务器故障或网络中断都可能导致数据丢失和开发工作中断。

2. 分布式版本控制系统(DVCS)概述:

分布式版本控制系统,如Git,会在每个开发者的本地计算机上创建完整的代码库副本。这使得每个开发者都能在无网络连接的情况下继续工作,并能在本地执行代码的修改和提交。随后,这些更改可以被推送到其他开发者的副本中。在DVCS中,每个客户端同时充当服务器的角色,拥有自己的代码库和历史记录,允许独立工作和多分支开发。尽管没有固定的版本号,但每个提交都有一个唯一的哈希ID,用于回滚操作。此外,存在一个主仓库(例如master),其版本号只在合并时迭代。

3. 主要区别:

  1. 代码库的功能与角色:在CVCS中,只有中央服务器上的代码库能作为主仓库,提供版本对比和回退等操作。而在DVCS中,每个副本都能执行中央仓库的功能。
  2. 协同开发与代码同步:CVCS中,若中央仓库出现问题,协同开发会受阻。DVCS则允许在本地断网情况下提交,并在联网后同步。
  3. 节点功能:DVCS的每个节点都是完整的仓库,而CVCS的节点只保存某个版本,不能作为主仓库使用。

六、集中式与分布式的优缺点分析

1. 分布式DVCS:

  1.    优点:灵活性高,支持并行工作;可扩展性好,适应大团队需求;独立性强,不依赖中央服务器,提高系统可用性和稳定性。
  2.    缺点:安全性问题,每个节点都可能成为攻击目标;数据一致性挑战,合并更改时可能出现问题;管理难度较高,需要更多技术知识。

2. 集中式CVCS:

  1.    优点:简单易用,设计直观;数据安全,便于保护数据完整性;管理方便,集中控制。
  2.    缺点:单点故障,中心节点出问题会影响整个系统;性能瓶颈,负载增大时中心节点可能限制处理能力;可扩展性有限,大规模扩展需升级中心节点。

七、Git 的安装及配置

1. Git 安装

   在Linux系统中,可以通过简单的命令来安装Git。例如,在基于Red Hat的系统中,可以使用以下命令安装Git:

   安装完成后,通过输入`git`命令,可以查看到Git的选项和参数,这表明Git已成功安装并可以使用。

2. 配置 Git 环境

   接下来,我们需要对Git环境进行基本配置,主要包括用户名和邮箱的配置,这样可以标识每次提交的作者信息:

八、Git 的基本流程

1. 首先,在工作目录(工作区)中修改文件。

2. 修改完成后,使用`git add .`命令将已修改文件快照保存到暂存区域。

3. 通过`git commit -m ""`命令将保存在暂存区的文件快照提交到版本库。

4. 使用`git log`命令可以查看提交历史。

具体操作示例

1. 创建本地空仓库

   首先创建一个空目录,然后在空目录中初始化(init)一个新的Git仓库:

   

2. 新建文件并提交到本地仓库

   接下来,我们创建一个新文件,并将其添加到本地仓库:

      提交完成后,使用`git log`可以查看提交的历史记录,每次提交都会生成一个唯一的40位哈希ID,作为提交的标识。

九、工作目录、暂存区和版本库

1. 工作目录:这是开发者直接操作的目录,可以包含各种文件和子目录。在这个目录中进行文件的添加、修改和删除操作。

2. 暂存区:这是工作目录和版本库之间的一个中间状态。执行`git add`命令后,已修改的文件会被添加到暂存区,等待被提交。

3. 版本库:这是实际存储所有提交历史记录的地方。每当执行`git commit`命令时,暂存区的内容会被提交到版本库,形成一个新的提交记录。版本库维护着项目的完整历史,允许开发者回溯和检查历史版本。

GitLab及分支管理

一、分支概念

在Git中,分支是指向提交的指针,这些提交被组织成一条时间线。默认情况下,Git有一个主分支,通常被称为`master`分支。在Git中,`HEAD`指针实际上指向当前分支的最新提交,而这个分支(如`master`)则指向具体的提交对象。因此,`HEAD`指向当前分支,确定了代码的当前状态和位置。

二、创建分支过程

   1. 确认当前分支: 首先确保你在主分支上工作,通常是`master`或`main`。可以通过以下命令切换回主分支:

   2. 创建新分支: 创建新分支的命令简单直观:

   3. 切换到新分支: 使用`git checkout`命令切换到新分支:

      或者,可以使用单一命令创建并切换到新分支:

   4. 开发和提交: 在新分支上进行开发和修改,然后使用`git add`和`git commit`命令添加和提交这些更改。

   5. 合并分支: 完成开发后,需要将这些更改合并回主分支。先切换回主分支,然后使用`git merge`命令合并新分支:

      如果合并过程中出现冲突,Git会在文件中标记出来,需要手动解决这些冲突后重新提交。

   6. 删除分支: 如果分支不再需要,可以用以下命令删除它:

      强制删除未合并的分支(谨慎使用):

   

三、解决分支冲突

当在Git中合并两个分支时,如果这些分支对同一个文件的同一部分进行了不同的更改,就可能会出现分支冲突。解决这种冲突需要一些手动干预和对Git命令的熟练运用。

1. 创建并切换分支: 首先,我们创建一个新分支并切换到该分支上进行操作。例如,创建并切换到名为`y123`的分支:

   2. 在新分支上进行更改并提交: 在新分支上进行必要的更改,然后使用`git add`和`git commit`命令将这些更改提交到新分支。例如,编辑`test.c`文件并在`y123`分支上提交:

   3. 切换回主分支并进行更改: 接下来,切换回主分支(通常是`master`),在主分支上进行不同的更改并提交:

   4. 合并分支: 当尝试将新分支合并到主分支时,如果两个分支对同一文件有冲突的更改,Git会提示合并冲突:

      这会提示`自动合并失败,修正冲突然后提交修正的结果`。

5. 解决冲突: 此时,需要手动解决冲突。Git会在文件中标记出冲突的地方,通常形式为:

      你需要决定保留哪些更改,删除Git添加的标记,然后保存文件。

6. 提交解决后的更改: 解决冲突后,使用`git add`将文件标记为已解决状态,然后提交:

7. 查看合并结果: 可以使用`git log`命令查看提交历史,确认分支已正确合并。

8. 删除已合并的分支: 如果分支已经被合并到主分支,并且没有其他用途,可以将其删除:

      如果要强制删除尚未合并的分支,可以使用`-D`参数代替`-d`。

四、 Git拉取

在开发过程中,经常需要在多台机器之间同步代码库。这里我们以两台主机WYY1和WYY2为例,演示如何从WYY1拉取代码库到WYY2。

  1. 在WYY2上设置SSH密钥对并传送公钥:

   首先,在WYY2上生成SSH密钥对,并将公钥发送到WYY1,以便进行无密码访问。

   2. 在WYY2上安装Git并创建仓库目录:

   安装Git软件,并准备一个目录用于存放克隆的代码库。

   3. 克隆WYY1上的代码库:

   使用`git clone`命令从WYY1上的仓库克隆到WYY2。

      这将在WYY2的`/WYY2`目录下创建一个名为`test`的文件夹,里面包含从WYY1克隆过来的代码。

五、部署GitLab服务器

GitLab是一个基于Git的代码托管平台,可以为开发团队提供代码存储、版本控制和协作功能。以下是在WYY1上部署GitLab的基本步骤:

   1. 安装必要软件包:

   更新系统并安装所需的软件包,包括Git和其依赖环境。

   2. 下载并安装GitLab:

   下载GitLab的RPM安装包并安装。

   3. 配置并启动GitLab:

   运行GitLab的配置脚本,并等待脚本执行完成,启动GitLab服务。

   4. 访问GitLab:

   在浏览器中输入服务器地址(如:http://192.168.33.11),设置初始密码后登录。

  5. 创建新项目和分支:

   登录后,在GitLab界面创建新项目,并在项目中创建主分支,添加文件,提交更改。

  6. 创建合并请求:

   通过创建新的分支并进行更改,之后通过GitLab界面发起合并请求,将更改合并到主分支。

  7. 客户端克隆分支:

   在WYY2上,通过Git命令克隆WYY1上GitLab中创建的项目。

      克隆操作完成后,可以查看项目内容,确保所有文件都已正确同步。

shell脚本实战

一、系统性能监控脚本

二、菜单脚本

三、nginx 启动脚本

四、简易猜拳脚本

五、随机双色球脚本

举报

相关推荐

0 条评论