【学习总结】Git学习-参考廖雪峰老师教程五-远程仓库
学习总结之Git学习-总
目录:
一、Git简介
二、安装Git
三、创建版本库
四、时光机穿梭
五、远程仓库
六、分支管理
七、标签管理
八、使用GitHub
九、使用码云
十、自定义Git
期末总结
五、远程仓库
添加远程库
从远程库克隆
------------------------------------------
5.0 远程仓库简介
“有了远程仓库,妈妈再也不用担心我的硬盘了。”——Git点读机
Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。
最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。
其实一台电脑上也是可以克隆多个版本库的,只要不在同一个目录下。不过,一台电脑上搞几个远程库完全没有意义,而且硬盘挂了会导致所有库都挂掉,所以不要在一台电脑上克隆多个仓库。
实际情况往往是这样,找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。
完全可以自己搭建一台运行Git的服务器,不过现阶段,为了学Git先搭个服务器绝对是小题大作。
好在这个世界上有个叫GitHub的神奇的网站,从名字就可以看出,这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。
-----> 所以综上,GitHub相当于这个24小时开机的服务器嘛??
下面添加公钥ssh:
5.0.1 找到公钥
在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对
id_rsa是私钥,不能泄露出去
id_rsa.pub是公钥,可以放心地告诉任何人。
- 查看公钥的其他两种方法 查看本机SSH公钥


--->在本机生成.ssh前...

---->在本机生成.ssh后...

- 如果没找到,要先生成:
廖老师说用命令ssh-keygen -t rsa -C "youremail@example.com"然后一路回车,好长,我看用菜鸟网站的短命令也生成了,如下图,应该是一样的吧

- 短命令后续:夭寿在关联本地库到远程库那步,要重新做啦~~<5.1.2>
- 短命令后续又后续:重新按长命令做了,公钥里写了邮箱,还是不行,而且是同样的错误,我????
- 短命令后续再后续:我想我知道了,是因为cat公钥的时候进了公钥的路径下,那个地方肯定没有git库了啊啊啊啊!!!!
所以问题大概在这里,所以也无从知晓短命令到底会不会坏事了,不过总是感觉后面跟着邮箱更踏实。

5.0.2 添加ssh key到GitHub账户
SSH Key:GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
GitHub允许添加多个Key。比如有多台电脑,把每台电脑的ssh key都添加即可。
登陆GitHub:打开“Account settings” ---> “SSH Keys”页面 -----> 点“Add SSH Key” ---> 填任意Title,在Key文本框里粘贴id_rsa.pub的内容 ---> add SHH key
(貌似GitHub改版了,版面布局略有不同)


- 奇了怪了,我在软工课时期添加的笔记本的ssh key怎么没了...蜜汁自动消失???
------------------------------------------
5.1 添加远程库
git remote add origin git@server-name:path/repo-name.git- 关联一个远程库
git push -u origin master- 第一次推送master分支的所有内容;
git push origin master- 此后,每次本地提交后,只要有必要,就可以使用此命令推送最新修改;分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!
下面demo一下整个过程:
- 现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。
5.1.1 在GitHub新建一个仓库
“Create a new repo”按钮 ---> Repository name填入learngit,其他默认 ---> “Create repository”:成功地创建一个新的Git仓库:

- 目前,在GitHub上的这个learngit仓库还是空的,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库

5.1.2 本地库关联到远程库
命令:git remote add origin git@server-name:path/repo-name.git
(思考一下,现在是从本地运行命令,连接到GitHub,故这里的path是指GitHub里的路径,或者说,网址,如下图)- 这里,不是网址的,http是http,ssh是ssh,两种形式!!
后记:这几个字大概是被我吃了。。。。

廖老师的例子:git remote add origin git@github.com:michaelliao/learngit.git - 这里要把michaelliao改成自己的名字,说的也是GitHub里的名字。bingo。
-------->啊啊啊啊不行啊!!!???

看到评论区的讨论,是前面设置ssh的时候按菜鸟网站那个简写的出问题了吗???

试试重新设置:
1-完整命令生成.ssh文件(生成的公钥不一样了,这次多了完整命令结尾的邮箱!!)

2-添加ssh公钥到GitHub账号


3-GitHub新建的仓库没有影响,就还这样继续这一步。(这里我好像梦见过,是一年前做这个作业的时候好像就有这种隐隐约约的感觉,在这个地方返工了,还有陌生的vim操作窗。。)

哈?还是不行啊,同样的错误,看来不是这个命令的锅??

-----> Google了以后(还是cn网站搜到的)说需要git init初始化,虽然不明白为啥,因为.git这个库是一直在的,为啥还要再初始化一次?不过试试看行不。
- 哈?幸亏没有再初始化一次,好险好险,直觉有问题,直觉是对的!!
------>我想我知道问题在哪了。。cat公钥的时候进了公钥文件路径下,这里自然不会有.git了! 所以呢。。最终我也不知道短命令到底行不行了。。



- 终于解决了,在这个小小的地方耽搁了这么久,没有消息就是最好的消息,哈哈哈哈
(添加成功后我看了一眼GitHub页面,没啥变化。。)
- 添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。
5.1.3 本地推送push
通过命令:git push -u origin master
- 把本地库的内容推送到远程,用
git push命令,实际上是把当前分支master推送到远程。由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支起来,在以后的推送或者拉取时就可以简化命令。

- 关于SSH警告,直接贴图了:

从现在起,只要本地作了提交,就可以通过命令:git push origin master
- PS:看了一眼GitHub页面的commit,总感觉这种可视化的东西整成多了,不然太缥缈了。。。看不见又摸不着那种。。

------------------------------------------
5.2 从远程库克隆
要克隆一个仓库,首先必须知道仓库的地址,然后使用
git clone命令克隆。
Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。
- 现在假设我们从零开发,最好的方式是先创建远程库,然后,从远程库克隆。
下面是一个demo:
5.2.1 在GitHub里准备一个远程库
登陆GitHub ---> 创建一个新的仓库gitskills ---> 勾选Initialize this repository with a README,这样GitHub会自动创建一个README.md文件
创建完毕后,可以看到README.md文件:


5.2.2 克隆到本地
克隆之前看好路径,因为是版本库,和learngit平级,就放到平级路径就好。(d:\software)
cd & pwd
pwd- 查看当前所在的路径。当然,在光标上一行会写当前路径。当前路径就是个大坑,时刻注意!!
cd ..确实是返回上一级,之所以失败是因为cd和..中间还有空格

克隆命令:git clone +


5.2.3 ssh 与 https
Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。
通过ssh支持的原生git协议速度最快。
使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。
【学习总结】Git学习-参考廖雪峰老师教程五-远程仓库的更多相关文章
- 【学习总结】Git学习-参考廖雪峰老师教程-总
公元2018-10-21 实验室台式机 win7 64位 参考教程: 廖雪峰Git教程 其他资料:Git-book 北大一只总结的笔记,最终整理的时候可以参考:Git笔记 评论区看到的另一个人,总结在 ...
- 【学习总结】Git学习-参考廖雪峰老师教程四-时光机穿梭
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- 【学习总结】Git学习-参考廖雪峰老师教程六-分支管理
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- 【学习总结】Git学习-参考廖雪峰老师教程三-创建版本库
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- 【学习总结】Git学习-参考廖雪峰老师教程八-使用GitHub
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- 【学习总结】Git学习-参考廖雪峰老师教程九-使用码云
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- 【学习总结】Git学习-参考廖雪峰老师教程二-安装Git
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- 【学习总结】Git学习-参考廖雪峰老师教程七-标签管理
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- 【学习总结】Git学习-参考廖雪峰老师教程十-自定义Git
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
随机推荐
- Linux 小知识翻译 - 「NTP」
这周聊聊「NTP」. 上次,聊了「时区」,也就是时间相关的话题. NTP是「Network Time Protocol」的简称,是为了将网络中计算机的时钟同步到正确时间的协议. PC内部的时钟是相当不 ...
- C语言 设一个函数process,调用它时,实现不同功能。
//凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 输入a, b,第一次调用process找最大值,第二次调用process找最小值,第三次调用求和. 方法1 ...
- 【项目 · Wonderland】会议一 · 可达鸭
[软件工程实践 · 团队项目] 第一次作业 Part 0 · 简 要 目 录 Part 1 · 队 伍 阵 容 Part 2 · 会 议 记 录 相 关 Part 3 · 会 议 讨 论 记 录 Pa ...
- linux学习笔记整理(一)
第二章 Linux基本操作 2.1 Linux网络相关概念和修改IP地址的方法2.2 关闭防火墙并设置开机开不启动2.3 临时和永久关闭Selinux2.4 设置系统光盘开机自动挂载2.5 配置本地 ...
- centos7下安装docker(15.4跨主机网络-flannel)
flannel是CoreOS开发的容器网络解决方案,flannel为每一个host分配一个subnet,容器从这些subnet中分配IP,这些IP可以在host之间路由,容器无需NAT和port ma ...
- Python:Day17 生成器、time和random模块
列表生成式: a = [x*2 for x in range(10)] #这是最简单的列表生成式,range换成其它的序列也OK a = [f(x) for x in range(10)] #将里将前 ...
- 上下文管理协议with open as
我们知道在操作文件对象的时候可以这么写 with open('a.txt') as f: '代码块' 上述叫做上下文管理协议,即with语句,为了让一个对象兼容with语句,必须在这个对象的类中声明_ ...
- python3 列表/字典/集合推导式
'''列表推导式[结果 fox循环 if语句]'''lst = ["Python周末%s期" % i for i in range(1, 27) if i%2 == 0]print ...
- mongo索引命令
http://blog.csdn.net/salmonellavaccine/article/details/53907535 1. 创建/重建索引 MongoDB全新创建索引使用ensureInde ...
- Eclipse中快速打开文件所在的文件夹位置
本篇文章是紧接着Elicpse使用技巧-打开选中文件文件夹或者包的当前目录文章写的,本文主要是讲的利用eclipse插件的方式打开文件夹的位置, 由于eclipse版本的区别,所以插件也分成两种(实测 ...