GIT学习笔记
远程仓库
添加远程库
- 现在,我们在本地创建了一个Git仓库后,又想在GitHub上创建一个Git仓库,并且让这两个仓库进行远程同步。这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,一举多得。
- 首先,登录GitHub,在右上角
Create a new repo
按钮,创建一个新仓库。 - 目前,在GitHub上的这个
learngit
仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。 - 现在,我们根据GitHub的提示,在本地的
learngit
仓库下运行命令:
$ git remote add origin git@github.com:lancibe/learngit.git
- 添加后,远程库的名字就是
oringin
,这是Git默认的叫法,也可以改成别的,但是oringin
这个名字一看就知道是远程库。 - 下一步,就可以把本地库的所有内容推送到远程库上:
$ git push -u origin master
对象计数中: 23, 完成.
Delta compression using up to 8 threads.
压缩对象中: 100% (18/18), 完成.
写入对象中: 100% (23/23), 1.85 KiB | 315.00 KiB/s, 完成.
Total 23 (delta 6), reused 0 (delta 0)
remote: Resolving deltas: 100% (6/6), done.
To github.com:lancibe/learngit.git
* [new branch] master -> master
分支 'master' 设置为跟踪来自 'origin' 的远程分支 'master'。
- 把本地库的内容推送到远程,用
git push
命令,实际上是把当前分支master
推送到远程。 - 由于远程库是空的,我们第一次推送
master
分支时,加上了-u
参数,Git不但会吧本地的master
分支内容推送到远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。 - 在以后我们只要本地做了提交,就可以通过命令
$ git push origin master
把本地的master
分支的最新修改推送至GitHub,现在,就拥有了一个真正的分布式版本库。
SSH警告
- 当第一次使用Git的
clone
或者push
命令连接GitHub时,会得到一个警告:
The authenticity of host 'github.com (13.229.188.59)' 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会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:
Warning: Permanently added 'github.com,13.229.188.59' (RSA) to the list of known hosts.
- 这个警告只会出现一次。如果实在担心有人冒充GitHub服务器,输入
yes
前可以对照GitHub的RSA key
指纹信息是否与SSH连接给出的一致。
从远程库克隆
- 前面我们学了先有本地库、后有远程库并且关联远程库。
- 如果我们从零开发,最好的方式是先创建远程库,然后从远程库克隆。
- 首先登录GitHub,创建一个新的仓库,名字叫
gitskills
,在创建时,可以勾选Initialize this repository with a README
,这样GitHub会自动为我们创建一个README.md
文件。 - 现在远程库已经准备好了,下一步是使用命令
git clone
克隆一个本地库。
$ git clone git@github.com:lancibe/gitskills.git
正克隆到 'gitskills'...
Warning: Permanently added the RSA host key for IP address '13.250.177.223' to the list of known hosts.
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
接收对象中: 100% (3/3), 完成.
- 进入
gitskills
目录,可以发现已经有README.md
文件了。
$ cd gitskills/
$ ls
README.md
- 这样的好处是如果有多人协作开发,那么每个人各自从远程库克隆一份就可以了。
- GitHub给出的地址不止一个,还可以使用
https
等其他协议,但是https
除了速度慢以外,最大的麻烦是每次推送都必须输入口令。但是在某些只开放https端口的公司内部就无法使用ssh
协议而只能使用https
。