当前位置:网站首页 > 微服务架构 > 正文

git的服务器(git 文件服务器)



Git基础概念详解

一、引言

二、基础概念概览 

三、安全通信与协议 

四、Git 服务器搭建与操作 

五、Git 工作流程与原理 

六、Git 日志与操作 

七、总结


“ 掌握Git的基本概念是高效进行版本控制的第一步。本文将详细介绍如何创建本地和远程仓库,Git支持的不同协议(如HTTP、HTTPS、SSH),以及搭建一个Git中央服务器的步骤。通过这些基础知识,您将能够顺利开始使用Git进行代码管理,并确保您的版本控制过程更加安全和高效。接下来,让我们一步步探索Git的核心概念及其实际应用。

首先要理解仓库的概念。什么是仓库呢?就是可以用管理的一个目录,这个仓库里所有的文件的改动(增加 / 修改 / 删除)都由跟踪记录。也能通过查看所有的记录,当然也能够通过“还原”到某个记录点。

仓库可以把它想象成一个文件数据库,这个仓库分为两个仓库:一个是远端仓库,一个是我们的本地仓库。

如何创建一个仓库呢?

  1. 首先创建一个目录:
  2. 然后进入这个目录:
  3. 初始化一个空的仓库:

上面三个步骤就可以创建一个空的仓库了,这个时候会在仓库目录下多了一个目录,目录里由很多关于管理的文件,这里面的东西不用我们管,没事也别去瞎折腾。

如果是创建远端仓库,在第三步初始化时一般都会使用参数来初始化成一个裸仓库。例如:

 

输出:

 

这样就初始化成一个空的裸仓库了。那什么是裸仓库?裸仓库表示目里面不会出现任何代码,只有一些版本信息、分支管理信息、配置相关等内容。这些东西一般不需要特别的关注,我们后面提交代码时这个目录的内容也不会产生过多的变化(即不会产生具体的代码)。

 

如果服务器不小心泄露了,让别人拿到这个裸仓库内容,他也做不了什么,因为完全看不到我们的源代码,这样我们的代码是安全的。所以,裸仓库算是为了代码安全设计的。这就是为什么远端服务器使用的是裸仓库的重要原因。

注意,一旦创建了远端仓库之后,一般是本地仓库去与远端仓库进行交互。交互过程中Git会为远端仓库创建一个别名:。这个别名其实是远端仓库的一些地址,我们只需要记住这个别名即可。

接下来演示如何创建一些本地仓库。

  1. 创建一个目录:
  2. 获取远端地址。
  3. 拉取远端代码。

有了仓库之后,就可以使用和向仓库添加要跟踪的文件,和提交修改的内容了。

本地与远端交互的时候,需要遵循相同的协议。有四个协议可以用于交互:

  • HTTP:使用HTTP协议进行Git操作时,由于其开放性与广泛支持,使得Git可以直接通过网页浏览器或简单的HTTP客户端进行访问。HTTP的广泛可用性意味着可以使用各种在线工具或服务器来进行Git操作,但同时也意味着可能需要额外的服务器配置来处理身份验证、SSL安全以及可能的防火墙限制。
  • HTTPS:HTTPS是HTTP的加密版本,使用SSL/TLS协议来加密数据传输,确保了数据在从本地到远程仓库或从远程仓库到本地的传输过程中不被第三方截取或篡改。HTTPS提供了更高的安全性,是如今Web服务中数据传输的首选方式。在Git中使用HTTPS时,通常需要一个公钥和私钥对,公钥用于服务器验证,私钥则用于客户端身份验证和加密数据。
  • SSH(Secure Shell):SSH协议主要用于在两个计算机之间提供网络安全的通信。在Git中,SSH被用来安全地进行代码的远程传输,尤其适用于需要通过SSH密钥进行身份验证的情况,这种验证方式更加安全且无需输入用户名和密码。SSH协议通过端口22进行通信,提供了在用户认证、文件传输、远程命令执行等多个方面上的安全连接。
  • Git:这是Git本身提供的协议,主要用于在Git仓库间进行快照和差异的存储和传输。Git协议是专为版本控制而设计的,它使用一种称为“轻量级的传输协议”(LWTP),能够有效地进行快照存储、分支和合并等功能。相比于HTTP和HTTPS,Git协议在进行版本控制时更加高效和直接,能够更好地处理分支和合并等特性,而无需通过外部协议进行数据传输。

本地仓库和远端仓库交互的时候是基于TCP进行数据交互的,那么就需要一个上层协议来完成,比较常用的是SSH协议。使用SSH协议的原因是因为通用的服务器默认都安装有SSH服务器。

接下来了解一下如何使用SSH协议来让本地仓库和远端仓库进行交互。SSH协议是一个验证授权的网络协议,使用非对称的加密方式。SSH 生成密钥的时候会产生公钥和私钥,通常需要将公钥放到远端仓库服务器,然后在每次发送数据时以私钥的方式进行验证,这样一来远端仓库和本地仓库交互就比较的安全。

那么,怎么生成 SSH 公钥和私钥呢? 可以使用如下命令生成:

 

这个命令后面一路按回车就行了。

这样一来,本地仓库就可以通过SSH免密登录远端仓库进行交互了。之后就可以通过 SSH协议 + 远端仓库的用户名 + 远端机器的IP地址 + 具体的仓库路径 拉取代码到本地了。

要想拉取远端代码到本地,就需要使用命令,这个命令需要指定具体的协议,示例如下:

 

这时,会生成对应的目录,并且在该目录下会有一个的文件夹,这个的文件夹就是本地仓库。

设置用户名和邮箱主要使用命令,这个命令有全局的设置方式(通过参数)和局部的设置方式。比如,本地的设置方式:

 

这个设置 git 一般是不会去验证的。注意,如果没有参数,设置的是当前目录的用户名和邮箱地址,只在当前目录有效;一般保存在文件下。

  1. 创建git账号和git用户组。
     
  2. 创建git仓库。
     
  3. 禁止git用户登录shell,这样git通过sh服务登录会被拒绝。
     
  4. 克隆远程仓库。比如在我的windows电脑上打开git bash shell,输入:
     

    即clone命令为:。在这个过程中需要输入用户名和密码,可以通过rsa认证的方式省略掉密码的输入。

  5. 免密输入的配置。就是通过rsa认证,生成公钥和私钥,然后把客户端的公钥告诉git服务器,具体步骤如下:
    • 在客户端机器上,比如我在windows机器上已经配置用户名和密码,见上一章的git配置说明。
    • 然后打开,生成rsa的秘钥对,命令后一路按回车,此时会在目录下生成和文件,是公钥文件,是私钥文件。
    • 在git服务器上的仓库路径执行和,然后把客户端的追加到这个文件里。这样后,我们就不需要每次都输入git密码了。

看起来很复杂,其实一点也不,简单概述就是:

  1. 创建远端仓库。
  2. 指定协议,通常是SSH协议。
  3. 设置免密。
  4. 配置用户名和密码。
  • :本地工作区,就是你平时存放项目代码的地方。比如你拉取代码,目录就是本地工作区了。开发者就在工作区里写代码。
  • :暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息。值得一提的是,SVN 是没有暂存区概念的。暂存区允许把多次修改统一放在暂存区中,然后再由暂存区统一提交到本地仓库,确保提交记录清晰。
  • : 本地仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中指向最新放入仓库的版本。
  • : 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换。

Git 的 工作流程 一般是这样的:

  1. 在工作区目录中添加、修改文件;产生数据变更。
  2. 将需要进行版本管理的文件到暂存区域;
  3. 将暂存区域的文件到仓库;
  4. 本地的修改到远程仓库,如果失败则执行第5步;
  5. 将远程仓库的修改拉取到本地,如果有冲突需要修改冲突,回到第三步。

因此,git管理的文件至少有三种状态:已修改(modified)、已暂存(staged)、已提交(committed)。

开发者在工作区修改文件,然后把工作区修改的文件 暂存 到 暂存区,再使用命令将暂存区的内容提交到本地仓库,命令一般要加参数告诉 Git 当前是提交的什么内容;最后通过命令推送到远端仓库。

可以使用查看工作区的文件状态。文件主要有四种状态:

  • :未追踪的文件,此文件在文件夹中,但并没有加入到git库,不参与版本控制。即Git还没有管理的文件。要想让文件变成被 Git 管理,需要将文件添加到暂存区,即使用命令将状态变为。
  • :文件已经入库且未修改, 即版本库中的文件快照内容与文件夹中完全一致,这种类型的文件有两种去处,如果它被修改, 而变为,如果使用移出版本库, 则成为文件。
  • :文件已修改,仅仅是修改,并没有进行其他的操作,这个文件也有两个去处,通过可进入暂存状态,使用 则丢弃修改,返回到状态, 这个即从库中取出文件,覆盖当前修改。
  • :暂存状态,执行则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为状态。
  • :新建的文件,并且加入了 Git 暂存区管理。

可以使用命令查看提交日志,例如:

 

可以注意到,有一个40位的值(值是通过函数来生成的),这个值就是当次提交生成的唯一标识ID,这个唯一标识ID也称为版本号。通常可以通过这个版本号查到是哪一次提交。

除了40位的值,还有一个也是需要注意的,是当前检出记录的符号引用,可以理解为一个指针,也可以理解为一个引用。因为是协作开发,所以通常会有一个很长的提交记录(即提交序列或列表),就是一个指向最近一次提交的指针。上述例子中指向,同时和是在相同位置。如果我们需要获取任何一个版本的信息,就可以以作为基本依据,往前推几个版本。

回顾工作区、暂存区和仓库的概念:

掌握Git的基本概念与实践操作,将助你在软件开发中实现高效协作与版本管理。从仓库创建到服务器搭建,从文件状态管理到版本控制,Git提供了一套完整的解决方案,助力你的项目从无到有,从简单到复杂,不断迭代前行。

到此这篇git的服务器(git 文件服务器)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • samba共享服务windows10(samba共享服务有什么用)2025-02-08 23:36:05
  • 二级域名解析到一级域名(二级域名解析到另一个服务器)2025-02-08 23:36:05
  • 网页聊天记录能找到吗(微信网页版上的聊天记录会有留存吗)2025-02-08 23:36:05
  • git 服务端(git 服务端钩子)2025-02-08 23:36:05
  • 微信好玩的代码整人(微信整人代码2020)2025-02-08 23:36:05
  • 微信hook下载图片(微信下载过程图片)2025-02-08 23:36:05
  • linux系统微信聊天记录(linux微信uos)2025-02-08 23:36:05
  • 微信hook教程(微信hook是什么)2025-02-08 23:36:05
  • 微信跳转链接一键生成系统(微信跳转链接一键生成系统错误)2025-02-08 23:36:05
  • 网页传输(网页传输助手看不了微信是吧)2025-02-08 23:36:05
  • 全屏图片