git分布式管理-头歌实验搭建Git服务器

news2024/11/15 21:27:09

一、Git服务器搭建

任务描述

虽然有提供托管代码服务的公共平台,但是对一部分开发团队来说,为了不泄露项目源代码、节省费用及为项目提供更好的安全保护,往往需要搭建私有Git服务器用做远程仓库。Git服务器为团队的开发者们,提供了协作开发平台,开发者可以基于私有的Git服务器进行项目开发。

本关任务:搭建本地Git服务器。

相关知识

Git服务器必须搭建在Linux系统下,因此必须准备一台运行Linux系统的主机,这里我们推荐Ubuntu或者Debian系统。 #####搭建远程登录Git服务器 如果你已经有了一台运行Ubuntu系统的主机,而且取得了root权限,那么如果你想要在该主机上搭建Git服务器,需要以下几个步骤。

安装并配置git

首先要在主机上安装git服务,在Ubuntu下安装git只需要一条命令即可:

sudo apt-get install git

这样就在该主机上安装了Git服务,然后执行git config,即可完成git的配置。

创建一个用户用来运行git服务的用户

创建一个专门的服务,来运行git服务,是为了使git服务和系统的其它服务不冲突。如果git服务可以在root权限下运行,则以root用户使用git服务即可,并不需要创建专门的用户去运行git服务。这里,我们假设创建一个名为educoder的用户,来运行git服务:

sudo adduser educoder

这样就可以在educoder用户下运行git服务。

创建证书登录

虽然是私有的Git服务器,但是也不能允许主机随意向Git服务器推送代码。因此,必须将需要使用Git服务器,即需要登录到Git服务器的主机的公钥(即id_rsa.pub文件)导入Git服务器的/home/git/.ssh/authorized_keys文件里,一行一个。

初始化git仓库

然后,就需要在主机下,选定一个目录做为Git仓库。如果我们使用/tmp/educoder.git做为远程仓库,则需要在/tmp目录下执行: sudo git init --bare educoder.git 这样,Git就会创建一个空白的仓库,里面没有内容,也不存在工作区和暂存区。这是因为Git仓库只是为了托管代码,所以不需要用户直接登录到Git服务器上去做修改。当我们创建了Git仓库之后,对应第二步创建专门的用户来运行Git,这一步需要将仓库的所属关系更改为相应用户,即:

sudo chown -R educoder:educoder educoder.git
禁用shell登录

出于安全考虑,第二步创建的educoder用户不允许登录shell,可以通过编辑/etc/passwd文件完成。找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改为: git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell 这样,eudcoder用户可以正常通过ssh使用git,但是无法登录shell。 通过以上步骤就完成了Git服务器的搭建,然后就可以通过Git命令,克隆远程仓库,并向远程仓库推送代码了

搭建本地Git服务器

但是,在本实训中,所有的用户都是在很高的权限下进行操作,本实训的目的也是为了让用户体验私有Git服务器,并掌握其搭建过程。因此,本实训允许在root权限下运行git服务,且需要以bash方式使用git操作。因此,需要在本机搭建Git服务器,且在本机执行克隆、推送等操作。为了满足这一要求,只需以下步骤即可。

安装并配置git

方法同远程Git服务器搭建步骤1

初始化git仓库

由于是在本机执行操作,因此不需要证书管理,则可以直接执行初始化Git仓库的操作。假设远程仓库地址为/home/sample.git,则可以在/home目录下执行:

sudo git init --bare sample.git

这样即可完成Git仓库的初始化。

由于需要在本地执行git操作,因此,也不需要设定Git服务器的登录方式。由在远程服务器搭建的步骤5中可知,git默认支持bash操作,因此也不需要再做改动。

由于需要在本地执行git操作,因此,也不需要设定Git服务器的登录方式。由在远程服务器搭建的步骤5中可知,git默认支持bash操作,因此也不需要再做改动。

仅需要以上两个步骤,即可完成本地Git服务器搭建。该服务器允许通过bash和远程仓库操作,且直接使用目录名做为远程仓库名。如果按照以上步骤生成了远程仓库/home/sample.git,则可以直接在本机目录下,执行如下格式的命令,完成远程版本库的clone:

git clone /home/sample.git

即可以直接把某个目录做为远程仓库。这种方式不是典型的远程仓库模式,但是做为体验远程仓库的方法,它简单方便,可操作性强。因此,本实训就只考察本地版本库的搭建,而把远程仓库的搭建做为体验性内容由用户自己完成。

编程要求

平台已经为你提供了一台运行Ubuntu系统的Linux主机,且已经为你安装了git,但是尚未进行配置。本关的编程任务是补全右侧代码片段中BeginEnd中间的脚本,具体要求如下:

  • 配置git的用户名和邮箱;
  • /tmp目录下初始化educode.git仓库,即仓库地址为 /tmp/educoder.git
#配置Git
git config --global user.email "you@example.com"
git config --global user.name "Your Name"

#进入/tmp目录
cd /tmp

#请在下方Begin/End星号线内填写git命令以初始化educoder.git仓库
#********** Begin **********#
git init --bare educoder.git
#********** End **********#

二、配置别名

任务描述

在操作Git的过程中,我们经常需要手动敲入类似于git statusgit checkout等命令。而statuscheckout这些单词较长,每次都要完整敲入的话,不仅浪费时间,而且还容易输错。如果可以为命令设置简写的话,比如以git st来代替git status,则会使操作变得更加简单方便。实际上,Git允许我们为git命令设置别名,以达到简化操作的目的。

本关任务:为git命令设置别名。

相关知识
设置别名

设置别名需要使用的命令是git config --global alias,其具体使用方法示例如下:

#为status设置别名st
git config --global alias.st status

执行以上步骤,即可将st设置为status的别名,即执行: git st的效果等效于执行git status。 同样,如果需要为其他命令设置别名,也可以采用相同的方式:

#为checkout设置别名co
$ git config --global alias.co checkout
#为commit设置别名ci
$ git config --global alias.ci commit
#为branch设置别名br
$ git config --global alias.br branch

需要指出的是--global参数是一个全局参数,即设置的这些别名可以在这台主机的所有Git仓库下使用。如果不加这个参数,则只对当前的仓库起作用。

删除别名

如果需要删除已经设置的别名的时候,则需要执行以下步骤:

  • 删除所有别名: 删除所有别名用到的命令为:

    git config [--global] --remove-section alias

    其中,--global是可选参数,加上这个参数也将本主机所有git仓库下的别名都删除,不加这个参数则仅删除本仓库下的别名。

  • 删除指定别名:

    git config [--global] --unset alias.你的别名

    同样的,--global也是一个全局参数。如果要删除本主机所有仓库下的st别名,则可以执行以下命令:

    git config --global --unset alias.st
  • 查看别名: 如果要查看当前主机已经设置了哪些别名,则可以执行以下命令:

    git config --list | grep alias

    会得到类似于alias.st=status的信息,这就是说系统当前已经为status设置了别名st

本关的编程任务是,补全右侧代码片段中BeginEnd中间的脚本,具体要求如下:

  • status设置全局别名st
  • checkout设置全局别名co
  • commit设置全局别名ci
  • branch设置全局别名br
#请在下方Begin/End星号线内填写git命令为系统设置全局别名
#********** Begin **********#
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch


#********** End **********#

三、公共版本库的使用之码云、Github

任务描述

本关任务:在码云上创建自己的项目。

相关知识
Github和码云的介绍

GitHub是通过Git进行版本控制的软件源代码托管服务,由GitHub公司(曾称Logical Awesome)的开发者Chris WanstrathPJ HyettTom Preston-Werner使用Ruby on Rails编写而成。

GitHub同时提供付费账户和免费账户。这两种账户都可以创建公开的代码仓库,但是付费账户还可以创建私有的代码仓库。根据在2009年的Git用户调查,GitHub是最流行的Git访问站点。除了允许个人和组织创建和访问保管中的代码以外,它也提供了一些方便社会化共同软件开发的功能,即一般人口中的社区功能,包括允许用户追踪其他用户、组织、软件库的动态,对软件代码的改动和bug提出评论等。GitHub也提供了图表功能,用于概观显示开发者们怎样在代码库上工作以及软件的开发活跃程度。

码云 Gitee (最新独立域名)是由开源中国出品,旨在树立国内代码托管和协作开发的行业标杆,灵活便捷地支撑个人、团队、企业的开发需求的产品。码云这一产品名称,指代的是“代码”和“云平台/云服务”。它和Github的区别是码云的私有库也是完全免费的,它提供中文服务,从而能够更好地服务国内开发者。码云分为企业版和个人版。企业版相对于个人版而言,其针对国内中小型开发团队敏捷开发的实践需要,除了代码托管之外,重点强化了与代码联系最密切的项目/任务管理和文档功能。

码云

对于一个没有使用过码云的开发者来说,如果要在码云上创建项目需要采用以下步骤。

注册

首先,我们需要到码云主页面去注册一个账号,码云的网址是https://gitee.com,其主界面如下所示

点击右上角红色框内的注册按钮,根据提示完成注册,即可获得一个码云账号。 登陆后主界面如下所示:

右上方红色框的加号按钮,提供的下拉菜单有进一步的操作。

创建项目

点击右上方的加号按钮,选择新建项目:

之后,进入新建项目界面,其界面显示如下:

从图中可以看到,我们可以设置自己项目的名称,并对自己的项目进行介绍。同时,我们也可以设置自己项目所采用的语言,并添加gitignore文件及添加开源许可证。在最下方,我们也可以选择将我们的项目进行公开或者保持私有,也可以选择初始化项目的方法。在项目介绍下方的三个下拉框内有更为详细的操作,请自行注册体验。 当设置好我们的项目的细节后,点击新建之后就完成了项目的创建:

在项目详情的右上角有HTTPS以及SSH协议的远程仓库地址,使用这个地址我们就能向向这个仓库推送代码。

推送代码

当在码云上创建了项目,从而创建了代码仓库之后,我们就可以向其推送代码,如下图所示:

我们在本地创建版本库,并添加在上一步骤中创建的码云仓库做为远程仓库。使用pull操作拉取远程分支内容之后,通过ls命令可以看到,将远程仓库的README.md这一初始化文件拉取到了本地。随后我们添加helloGit文件,并将其提价到本地仓库,随后我们将其推送至远程仓库,如下图所示:

注意,推送过程中会提示你输入用户名和密码,这里需要使用注册用的邮箱和登录密码。 然后我们观察码云上的版本库可以看到:

helloGit文件已被推送至码云上的代码仓库。

Github
创建并使用代码仓库

为了使用Github,必须首先在其官网注册账号,注册完成后,点击右上角加号按钮创建仓库:

然后,配置新仓库的名称、描述信息、公开或者私有以及是否初始化等选项:

之后就完成了仓库的创建,在仓库的主界面我们可以看到如下界面: 在界面右上角点击Clone or download按钮,就能看到仓库的远程地址:

之后就完成了仓库的创建,在仓库的主界面我们可以看到如下界面: 在界面右上角点击Clone or download按钮,就能看到仓库的远程地址:

但是仅有仓库地址,还无法向其推送代码。因为Github要求认证主机,即需要在项目的证书列表中,添加主机的公钥。然后改主机,才能向此仓库推送代码。点击Settings按钮,选择Deploy keys选项,可以看到如下界面:

在右侧的Title输入框设置公钥的名称,然后在下方的key输入框中,写入相应主机的公钥,然后该主机就能向该仓库推送代码。

Fork和Pull Request

Github提供了fork功能。当我们发现某一个优秀的开源项目,并想为项目贡献代码时,点击fork即可复制该项目到自己的账户下的一个仓库。

在自己的仓库下进行修改后,可向原项目发起pull Request,以请求将自己的代码合并进原项目。项目发起方收到你的pull request后,会对你的代码进行审核,审核通过则会将你的修改合并到项目中去。这种模式也是目前流行的开源项目的发展模式。

Star

当你对一个项目很感兴趣,想实时关注该项目的进展时,可以star该项目,这样,当项目有改动时你就可以及时收到通知。

编程要求

本关的任务是,在码云上注册账号,并创建项目,然后将此项目做为远程仓库地址,向其master分支推送gitTraining.txt文件。具体要求如下:

  • 在码云上注册账号并创建项目;
  • 向项目中推送gitTraining.txt文件;
  • 将项目的版本库地址填入右侧Begin/End星号线内。
git remote add origin https://gitee.com/your_username/your_project.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1503188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:ImageSpan)

Text组件的子组件,用于显示行内图片。 说明: 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 无 接口 ImageSpan(value: ResourceStr | PixelMap) 参数: 参数名参数类…

ShardingSphere-SQL 解析 Issue 处理流程

ShardingSphere-SQL 解析 Issue 处理流程 这是之前给社区写的 SQL 解析 Issue 的处理流程,可以帮助社区用户快速参与到 ShardingSphere-SQL 解析任务当中。 ShardingSphere SQL 解析 issue 列表 Issue 背景说明 当前 Issue 使用自定义的爬虫脚本从对应的数据库官…

vue2 div滚动条下拉到底部时触发事件(懒加载) 超级简易版本的懒加载

文章目录 导文文章重点内容效果展示:代码展示这些方法适用于哪些场景 总结 导文 vue2 div滚动条下拉到底部时触发事件(懒加载) 超级简易版本的懒加载 文章重点 内容效果展示: 当div拉到底部的时候: 编辑器返回: 代码展示 在…

分享axios+MQTT简单封装示例

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在19…

鸿蒙实战开发Camera组件:【相机】

相机组件支持相机业务的开发,开发者可以通过已开放的接口实现相机硬件的访问、操作和新功能开发,最常见的操作如:预览、拍照和录像等。 基本概念 拍照 此功能用于拍摄采集照片。 预览 此功能用于在开启相机后,在缓冲区内重复采集…

IP地址定位技术的主要功能及应用

在互联网时代,IP地址定位技术成为了一项重要的技术,它通过分析用户的IP地址,确定用户的地理位置信息。IP地址定位技术不仅在网络安全、网络管理等领域有着重要的应用,也在商业、广告营销等领域发挥着重要作用。IP数据云将探讨IP地…

【网络层】IP多播技术的相关基本概念(湖科大慕课自学笔记)

IP多播 1:IP多播技术的相关基本概念 我们简单举例,如下图所示: 一共有60个主机要接受来自视频服务器的同一个节目,如果采用单播方式,则视频服务器要发送60份,这些视频节目通过路由器的转发,最…

⎣优化技术⎤CoT-Decoding

微信公众号|人工智能技术派 作 者|hws 一种解码策略优化技术:目标是不需要任何显示的CoT prompting,能够有效提升大型语言模型在各种推理任务中的表现,并通过自发地揭示CoT推理路径,改善模型的推理能力和准确性。 背景介绍 大模…

【Linux基础(四)】管道

学习分享 1、什么是管道2、管道的分类3、管道的特点4、pipe函数(匿名管道)5、命名管道:FIFO文件5.1、创建一个命名管道5.2、访问一个FIFO文件 6、命名管道示例6.1、写操作示例6.2、读操作示例 7、access函数和mkfifo函数8、删除FIFO文件 1、什…

基于java+springboot+vue实现的宠物健康咨询系统(文末源码+Lw)23-206

摘 要 本宠物健康咨询系统分为管理员还有用户两个权限,管理员可以管理用户的基本信息内容,可以管理公告信息以及宠物健康知识信息,能够与用户进行相互交流等操作,用户可以查看宠物健康知识信息,可以查看公告以及查看…

一个将图片转3D的开源项目TripoSR

TripoSR AI是StabilityAI联合发布的图生3D模型,TripoSR是一个快速的3D物体重建模型。TripoSR能够在不到一秒钟的时间内从单张图片生成高质量的3D模型。TripoSR模型的特点是能够快速处理输入,在 NVIDIA A100 GPU 上不到 0.5 秒的时间内生成高质量的 3D 模…

【STM32+OPENMV】二维云台颜色识别及追踪

一、准备工作 有关OPENMV最大色块追踪及与STM32通信内容,详情见【STM32HAL】与OpenMV通信 有关七针OLED屏显示内容,详情见【STM32HAL】七针OLED(SSD1306)配置(SPI版) 二、所用工具 1、芯片:STM32F407ZGT6 2、CUBEMX配置软件 3、KEIL5 4…

Python和Google Colab进行卫星图像二维小波变化和机器学习

2D 小波分解是图像处理中的一种流行技术,使用不同的滤波器将图像分解为不同的频率分量(“近似”和“细节”系数)。该技术对于各种图像处理任务特别有用,例如压缩、去噪、特征提取和边缘检测。 在本文中,我们将演示如何在 Google Colab 中使用 Python 下载高分辨率样本卫星…

XSS-Labs靶场1---11关

一、XSS环境搭建: [ 靶场环境篇 ] XSS-labs 靶场环境搭建(特别详细)_xss靶场搭建-CSDN博客 (该博主总结的较为详细,若侵权必删) 常用的xss攻击语句: 输入检测确定标签没有过滤后,为了显示存在漏洞&#…

Vue2 基础二常用特性

代码下载 表单操作 基于Vue的表单操作 input 单行文本textarea 多行文本select 下拉多选,multiple属性实现多选,多选时对应的 data 中的数据也要定义成数组radio 单选框checkbox 多选框,data 中的数据要定义成数组,否则无法实现…

C++ Qt开发:QNetworkInterface网络接口组件

Qt 是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QNetworkInterface组件实现查询详细的…

面试遇到了接口分析和测试用例分析题,该如何下手?

只要有软件产品的公司百分之九十以上都会做接口测试,要做接口测试的公司那是少不了接口测试工程师的,接口测试工程师相对于其他的职位又比较轻松并且容易胜任。如果你想从事接口测试的工作那就少不了对接口进行分析,同时也会对测试用例进行研…

el根据需求合并列

将 列分为 3 3 1 的格式 以下是vue代码&#xff1a; <el-table:data"dataSource":border"true":header-cell-style"{ font-weight: normal, text-align: center }":cell-style"{ text-align: center }"size"mini"style…

CODESYS双通气缸功能块(ST源代码)

博途PLC双通气缸功能块请参考下面文章链接: https://rxxw-control.blog.csdn.net/article/details/136415539https://rxxw-control.blog.csdn.net/article/details/136415539CODESYS 结构变量使用 https://rxxw-control.blog.csdn.net/article/details/126248829

NUMA简介

NUMA 1 什么是NUMA 早期的计算机&#xff0c;内存控制器还没有整合进 CPU&#xff0c;所有的内存访问都需要经过北桥芯片来完成。如下图所示&#xff0c;CPU 通过前端总线&#xff08;FSB&#xff0c;Front Side Bus&#xff09;连接到北桥芯片&#xff0c;然后北桥芯片连接到…