关于本地仓库的一些东西前面基本已经讲完了,接着转移到远程仓库的学习。远程仓库的作用主要有:
- 对本地代码进行备份。
- 多人进行协作开发的中间渠道。
比较著名的远程托管仓库就是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,前者要设置秘钥,后者需要每次输入密码。