---
title: Git(4)-远程仓库
date: 2017-11-19 00:20:17
tags: 
  - git
  - 版本控制
categories: 
  - Git
---

在多人的协作开发当中 , 我们需要一个公共的远程库 , 每个人都可以从远程库把项目clone到自己的电脑上进行开发 , 之后把自己编写的代码推送到远程库
完全可以自己搭建一台运行的Git服务器 , 或者利用GitHub这种公共的Git托管服务
<!-- more -->
这里用[GitLab](https://gitlab.com/)来进行测试

#### 创建SSH key
由于本地和远程仓库之间的传输是通过SSH加密的 ( 这个取决于Git托管服务本身的架构 , 如果不是的话可以跳过这个步骤 )
```bash
ssh-keygen -t rsa -C "email地址"
```
执行完成后在本地的用户主目录里面找到`.ssh`目录 , 里面有`id_rsa`和 `id_rsa.public`
前一个是密钥 , 后一个是公钥
把公钥的内容添加到自己账号的SSH keys的设置当中
![gitlab ssh](/images/git/gitlab_ssh.png)
Title是自己看的  随便写即可

#### 添加远程库
在GitLab上创建一个名为git_learn的远程库
我的账号对应的SSH链接就是`git@gitlab.com:sookie/git_learn.git`
在本地的git仓库里面执行
```bash
#添加远程库
git remote add origin git@gitlab.com:sookie/git_learn.git
```
origin是本地仓库中给这个远程库起的名字
一个本地仓库可以对应多个远程库

然后就可以把本地库的所有内容推送到远程库上
```bash
#把master分支推送到名为origin的远程库
git push -u origin master
```
第一次推送的时候需要加`-u`参数
之后只需要执行`git push origin master`即可

#### 克隆远程库
如果需要从一个远程库克隆出一个本地库
需要使用
```bash
git clone git@gitlab.com:sookie/git_learn.git
```
如果有多个人协作开发，那么每个人各自从远程克隆一份就可以了。
> 对于远程库的地址 , 还有`https://gitlab.com/sookie/git_learn.git`这样的地址
> 这是由于Git支持多种协议
> 如果服务器只开放了http端口 ,  那么就不能使用ssh协议而只能用https
> 原生的git协议速度比较快
