关于本地仓库的一些东西前面基本已经讲完了,接着转移到远程仓库的学习。远程仓库的作用主要有:
- 对本地代码进行备份。
 - 多人进行协作开发的中间渠道。
 
比较著名的远程托管仓库就是GitHub了,接下来的一些例子都是针对GitHub进行的。GitHub的账户注册和仓库创建这里就不讲了。我首先在GitHub上建立了一个叫learngit的仓库,创建成功之后GitHub会给我们以下提示来对两个仓库进行关联:
- 使用桌面版的GitHub来快捷关联,可以使用这个仓库的
 Https地址或者SSH地址进行关联。- 新建一个本地仓库,然后使用
 git add命令进行关联,然后使用git push命令更新。- 如果有一个现成的本地仓库,直接使用
 git add命令进行关联,然后使用git push命令更新。- 从另一个远程仓库导入文件。
 - 可以直接使用
 git clone命令把远程仓库克隆到本地。
桌面版的使用就不讲了,比较简单。这里我们看下命令行的使用,其实主要分为两种情况:
- 已有本地仓库(新建或者非新建),直接进行关联,使用
 git add命令。- 没有本地仓库也不打算新建,使用
 git clone命令把远程仓库克隆过来。
先来试一下git add命令,按照提示:
$ git remote add origin git@github.com:ProHuper/learngit.git
这句表示添加一个远程仓库的关联,并制定了远程仓库的SSH地址,这个地址可以在自己的GitHub项目主页中找到。这里你关联别人的仓库也可以,但是你是push不上去的,因为你的SSH Key不在别人的的账户列表中。这里如果不小心添加错误的话可以使用git remote rm 命令删除关联。仓库关联完之后我们就可以向远程仓库提交内容了,来试一下:
$ git push -u origin master
Counting objects: 25, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (25/25), 1.87 KiB | 174.00 KiB/s, done.
Total 25 (delta 6), reused 0 (delta 0)
remote: Resolving deltas: 100% (6/6), done.
To github.com:ProHuper/learngit.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
由于是第一次push所以要加上-u参数,这样Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。更新完成后你就发现远程仓库的内容已经和本底同步了。
由于git push涉及到远程和本地的传送,因此一定要解决加密问题。Git使用的是ssh链接,而ssh连接在第一次验证GitHub服务器的key时,需要你确认GitHub的key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。为了保险起见你可以使用ssh-keygen命令在本地生成的秘钥,然后添加到GitHub账户里就行了,具体做法可以百度github如何 添加ssh key。使用ssh相比使用https协议的好处就是可以不用在每次push的时候都输密码,所以建议使用ssh。但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。
git add的大致就是这样,我们在来看下git clone的使用:
$ git clone git@github.com:michaelliao/gitskills.git
clone的话一定是从远程仓库,所以不需要remote这些选项了,我们还是选择使用ssh地址。
总结:
git add remote -> 远程关联本地
git clone -> 本地关联远程
git push -> 推送本地内容
传送协议/加密方式:ssh和https,前者要设置秘钥,后者需要每次输入密码。