Git

Git学习笔记 06

远程仓库

Posted by Huper on December 14, 2017

关于本地仓库的一些东西前面基本已经讲完了,接着转移到远程仓库的学习。远程仓库的作用主要有:

  1. 对本地代码进行备份。
  2. 多人进行协作开发的中间渠道。

比较著名的远程托管仓库就是GitHub了,接下来的一些例子都是针对GitHub进行的。GitHub的账户注册和仓库创建这里就不讲了。我首先在GitHub上建立了一个叫learngit的仓库,创建成功之后GitHub会给我们以下提示来对两个仓库进行关联:

  1. 使用桌面版的GitHub来快捷关联,可以使用这个仓库的Https地址或者SSH地址进行关联。
  2. 新建一个本地仓库,然后使用git add命令进行关联,然后使用git push命令更新。
  3. 如果有一个现成的本地仓库,直接使用git add命令进行关联,然后使用git push命令更新。
  4. 从另一个远程仓库导入文件。
  5. 可以直接使用git clone命令把远程仓库克隆到本地。

桌面版的使用就不讲了,比较简单。这里我们看下命令行的使用,其实主要分为两种情况:

  1. 已有本地仓库(新建或者非新建),直接进行关联,使用git add命令。
  2. 没有本地仓库也不打算新建,使用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,前者要设置秘钥,后者需要每次输入密码。