zoukankan      html  css  js  c++  java
  • git分布式的理解----简单服务端搭建

      Git是分布式的,并没有服务端跟客户端之分,所谓的服务端安装的其实也是git。Git支持四种协议,file,ssh,git,http。ssh是使用较多的,下面使用ssh搭建一个免密码登录的服务端。

      1、提前安装git跟sshserver;

      2、 创建一个用户,用来运行git服务;

      新建一个用户,叫gituser,然后切换到gituser的默认目录,创建一个叫.ssh的文件夹,并在其中创建一个叫authorized_keys的文件,这个文件将用于存储git开发者的ssh公钥。

      

      3、建立一个git仓库;

      切换到gituser默认目录,建立一个testgit文件夹,在其中创建一个用于测试的git项目并进行初始化。

      

      创建一个aaa.txt,内容随便填写,将该文件纳入git管理

      

      4、创建证书

      切换到git开发者电脑。设置本地git用户并创建公钥和私钥

      

      Windows系统,在用户主目录下有id_rsa.pub跟id_rsa两个文件:

      

      

      这两个就是一对秘钥,id_rsa是私钥,id_rsa.pub是公钥。

      5、添加公钥到ssh  

      将本地生成的id_rsa.pub的内容追加到git服务器gituser用户的~/.ssh/authorized_keys文件中。注意,不是把authorized_keys建成文件夹,把公钥扔进去,是追加文件内容。

      特别要注意:.ssh的权限必须是700,authorized_keys文件的权限必须是600,否则公钥无法生效。

      6、修改ssh服务端配置

      vi /etc/ssh/sshd_config

      

      7、从服务端clone项目

      在开发者电脑端,执行以下命令:

      

      可以看到我们成功把“服务器”上的git项目clone到了本地。

      ------------------------------------------------------------------------------------------------------------

      其实,上面的操作有些繁琐:在“服务端”建一个git项目,然后初始化,然后建一个可以免密码登录的用户,然后用这个账号把git项目拷贝了下来;简单来说,我不免密码登录,也可以git clone那个项目,比如我用root用户:

      

      也就是说,只要“服务端”有git项目,有一个可以远程登录的ssh用户,我们就可以直接git clone 那个项目,这个时候,“服务端”跟“客户端”都只要git,没有所谓的gitlab等服务端软件,两者之间只是通过ssh通信就可以实现git的clone,commit等操作,两者地位是平等的。

      可见git的确是无中心的分布式的。而github,gitlab之类的“服务端”其实是一个帮助我们管理用户跟git通信方式的工具,在这一点上,gitlab跟visualsvn-server之类的软件有本质的区别。

      ------------------------------------------------------------------------------------------------------------

  • 相关阅读:
    ASP.NET Boilerplate
    Financial.IPmt/Financial.PPmt
    VB内部函数(三)——财务函数
    Convert VB.NET to C#
    MySQL 使用自增ID主键和UUID 作为主键的优劣比较详细过程(从百万到千万表记录测试)
    Oauth2.0客户端服务端示例
    一张图搞定OAuth2.0
    使用JAVA实现的一个简单IOC注入实例
    谈谈对Spring IOC的理解
    秒懂,Java 注解 (Annotation)你可以这样学
  • 原文地址:https://www.cnblogs.com/nevermorewang/p/6410776.html
Copyright © 2011-2022 走看看