git分布式的理解----简单服务端搭建

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

  一、提早安装git跟sshserver;github

  二、 建立一个用户,用来运行git服务;服务器

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

  

  三、创建一个git仓库;分布式

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

  

  建立一个aaa.txt,内容随便填写,将该文件归入git管理工具

  

  四、建立证书gitlab

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

  

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

  

  

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

  五、添加公钥到ssh  

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

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

  六、修改ssh服务端配置

  vi /etc/ssh/sshd_config

  

  七、从服务端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之类的软件有本质的区别。

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

相关文章
相关标签/搜索