首先来区分两个概念:gitlab
和github
,它们都是git服务器,github
是现有的用来提供Git仓库托管服务的,gitlab
是自己搭建出来的运行Git的服务器。因为github
是免费的,只要注册就可以获得Git远程仓库,但是github
上仓库都是公开的,如果想保护起来需要另交费,因此出现了gitlab
我们本地创建一个Git仓库后,又在gitlab
上创建了一个Git仓库,如何实现让两个仓库同步?实现远程仓库备份本地仓库内容,方便其他人通过该远程仓库协同完成任务。下面我们进行实践……
1、首先在远程仓库上建一个仓库,或者把已有的仓库地址拿来用
创建完后还是一个空的仓库,没有任何内容。
有了这个仓库后我们可以克隆出新的仓库到本地,也可以把本地建好的仓库和远程仓库关联,然后依然可以push本地仓库内容到gitlab仓库,克隆只需要git clone 仓库地址
就可完成,下面我们讲关联
- 2、本地仓库和远程仓库关联
git remote add origin <远程仓库地址> #关联远程仓库
git push -u origin master #push到远程仓库
把本地库的内容推送到远程,用git push
命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u
参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
推送成功后就可以在gitlab仓库中看到我们push的内容
注意:如果本地有多个仓库,那每个仓库都会关联一个远程仓库,关联命令使用一次就好,下一次就可以直接push到已关联好的远程仓库
3、push或者clone不成功报错
当你第一次使用Git的clone或者push命令连接GitLab时,会得到一个警告:
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可
Git会再次输出一个警告,告诉你已经把GitLab的Key添加到本机的一个信任列表里了:
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
这个警告只会出现一次,后面的操作就不会有任何警告了。
但是,当我们关机重启后再次使用push命令时可能会有这个提示Failed to add the host to the list of known hosts
,说明在读本地文件known hosts的时候出现了权限问题,解决这个问题的方法是在gitbash中执行以下命令
chmod 644 ~/.ssh/known_hosts
chmod 755 ~/.ssh
问题就解决啦~