远程仓库
大约 3 分钟

最常用、最大的远程仓库:GitHub。
Github支持两种同步方式“https”和“ssh”。
- https很简单基本不需要配置就可以使用,但是每次提交代码和下载代码时都需要输入用户名和密码。
- ssh方式就需要客户端先生成一个密钥对,即一个公钥一个私钥。然后还需要把公钥放到githib的服务器上。
SSH协议
SSH: Secure Shell(安全外壳协议)的缩写,由 IETF 的网络小组(Network Working Group)所制定。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
基于密匙的安全验证:
使用ssh协议通信时,推荐使用基于密钥的验证方式。
你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密。
SSH连接远程仓库
# 生成公私钥
ssh -keygen -t rsa将公钥配置到GitHub账户中。

远程仓库的使用
添加远程仓库
# 添加一个新的远程 Git 仓库,同时指定一个方便使用的简写
git remote add <shortname> <url>- 使用简写(别名)shortname 可以指代对应的 url
from远程仓库
# 从远程仓库克隆
git clone <url>
# 从远程仓库抓取所有分支(抓取完握在手里)
git fetch <remote>
# 抓取特定的远程仓库分支,抓取玩存储在本地仓库的 FETCH_HEAD 引用中
git fetch <remote> <branch>
# 从中拉取所有本地仓库中没有的数据。不会自动合并或修改,必须手动合并。
# 从远程仓库拉取
git pull <remote>
# 抓取数据并自动尝试合并到当前所在的分支- 使用 clone 命令克隆了一个仓库,会自动将其添加为远程仓库并默认以 “origin” 为简写。
查看远程仓库
# 列出所有远程仓库的简写(别名)
git remote
# 列出所有远程仓库的简写和记录的URL
git remote -v
# 查看某一个远程仓库的更多信息
git remote show <remote>推送到远程仓库
git push <remote> <branch>- 具有远程仓库写入权限,并且之前没有人推送过时,这条命令才能生效。
- 如果有人先推送了,必须先合并他人的提交然后才能推送,不然推送会被拒绝。
远程仓库的重命名
# 修改远程仓库的简写(别名)
git remote rename <remote> <newShortname>
# 值得注意的是这同样也会修改你所有远程跟踪的分支名字
# 如:引用 pb/master 变为引用 paul/master远程仓库的移除
git remote rm <remote>
git remote remove <remote>
# 所有和这个远程仓库相关的远程跟踪分支以及配置信息也会一起被删除