GIT学习-03服务器上的Git

来源:互联网 发布:java 局部变量 编辑:程序博客网 时间:2024/06/15 21:22

一、Git在服务器上

    远程仓库时一个裸仓库(bare repository):一个没有当前工作目录的仓库,仅存放Git的数据,即工作目录中的.git子目录内的内容就是裸仓库 

1、协议

    Git可以使用的协议有:本地传输、SSH协议、Git协议和HTTP协议(除了HTTP协议外,其他协议都需要在服务器端安装并运行Git)。     1.1 本地协议         简单的说就是硬盘上的另一个目录,常见的是团队成员对一个共享的文件系统有用访问权限         ①、克隆仓库            git clone  /opt/git/project.git         ②、添加本地仓库作为现有Git项目的远程仓库            git remote add local_proj opt/git/project.git         ③、优点:简单、同时保留现存文件的权限和网络访问权限;缺点:难以控制从不同位置来的访问权限,最主要的是访问数据的速度慢。 

1.2 SSH协议

    最常用的一种Git传输协议,其原因:SSH协议也是唯一同时支持读写操作的网络协议;SSH同时也是一个验证授权的网络协议;因为普通,所以架设容易     ①、克隆仓库        git clone ssh://user@server/project.git        git clone user@server/project.git :不指名协议,Git默认SSH     ②、优点:可以对网络仓库进行写的权限;架设简单;访问的安全性可以保障,所有数据的传输都是加密和授权的;高效性,在传输之前会压缩数据;缺点:不能进行匿名访问,不利于开源项目 

1.3 Git协议

   包含在Git软件包中的特殊守护进程;它监听一个提供类似于SSH服务器的特点端口(9418),而无需任何授权。 

1.4 HTTP/S协议

   架设的简便性:将Git的裸仓库文件放在HTTP的根目录下,配置一个特定的post-update挂钩(hook)就OK了。    ①、通过HTTP对仓库进行读取:       cd /var/www/htdocs       git clone --bare /path/to/git_prj gitprj.git       cd gitprj.git       mv hooks/post-update.sample hooks/post-update       chmod a+x hooks/post-update       git update-server-info:确保HTTP的正常工作    ②、优点:易于架设,可以加密传输内容;使用特定签名的SSL证书;一个额外的好处--HTTP是一个常见的协议,以至于企业级防火墙都允许其端口的通信;缺点:客户端效率较低,克隆或者下载仓库内容花费时间较多,网络开销大,常被称为傻瓜(dumb)协议。 

二、在服务器上部署Git

    在架设之前首先把现有仓库导出为一个裸仓库:git clone --bare prjName prjName.git,并且prjName.git的目录中已经有一份Git目录数据的副本。即:cp -Rf prjName/.git prjName.git 

2.1 将裸仓库移到服务器上

    访问:scp -r prjName.git user@git.example.com:/opt/git     读写:git clone user@git.example.com:/opt/git/prjName.git     有读写就有推送权限:git init --shared:Git会自动修改仓库目录的组权限为可写。     注意:若是在一个不公开的项目上合作,仅仅需要一个SSH服务器和裸仓库就OK了。 

2.2 SSH连接

    ①、为每个人建立一个账户,反复使用adduser添加用户设置密码——不可取。     ②、在主机上建立一个Git账户,让每个需要写权限的人发送一个SSH公钥,然后加入git账户的~/.ssh/authorized_keys文件;     ③、让SSH服务器通过某个LDAP服务或者已经设定好的集中授权机制,进行授权。 

三、生成SSH公钥

    SSH公钥默认存储在账户的主目录下的~/.ssh目录,查看是否有id_dsa或者id_rsa,有.pub后缀的文件就是公钥,另一个文件这是密钥。     3.1 创建SSH公钥:ssh-keygen 

这里写图片描述
将公钥发给需要的人就OK。
公钥的内容:
这里写图片描述

其他关于git使用文档请看:

  1. git学习-01基础
  2. gitx学习-02分支
  3. git学习-04git-svn的使用
原创粉丝点击