到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了。
可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Git有什么特别的地方。
没错,如果只是在一个仓库里管理文件历史,Git和SVN真没啥区别。为了保证你现在所学的Git物超所值,将来绝对不会后悔,同时为了打击已经不幸学了SVN的童鞋,本章开始介绍Git的杀手级功能之一(注意是之一,也就是后面还有之二,之三……):远程仓库。
Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。
你肯定会想,至少需要两台机器才能玩远程库不是?但是我只有一台电脑,怎么玩?
其实一台电脑上也是可以克隆多个版本库的,只要不在同一个目录下。不过,现实生活中是不会有人这么傻的在一台电脑上搞几个远程库玩,因为一台电脑上搞几个远程库完全没有意义,而且硬盘挂了会导致所有库都挂掉,所以我也不告诉你在一台电脑上怎么克隆多个仓库。
实际情况往往是这样,找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。
完全可以自己搭建一台运行Git的服务器,不过现阶段,为了学Git先搭个服务器绝对是小题大作。好在这个世界上有个叫GitHub的神奇的网站,从名字就可以看出,这个网站就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。
在继续阅读后续内容前,请自行注册GitHub账号。由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh
目录,里面有id_rsa
和id_rsa.pub
两个文件,这两个就是SSH Key的秘钥对,id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人。
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub
文件的内容:
点“Add Key”,你就应该看到已经添加的Key:
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。
如果你不想让别人看到Git库,有两个办法,一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见的。这个方法我们后面会讲到的,相当简单,公司内部开发必备。
确保你拥有一个GitHub账号后,我们就即将开始远程仓库的学习。
相关推荐
ssh_config 希望对你有用!
开发者碰到同一代码托管平台 来自多个账号的 sshkey 加入开发这 分别加入了 三个 gitee 不同团队的项目 这个时候我们需要配置多个key在 Administrator(当前用户名)/.ssh/ 目录下 需要创建 config文件,git在这里有个...
华三路由器ssh加密文件转换器,使路由器可以使用.
aws-ssh-config, 从 AWS EC2清单生成SSH配置文件 aws-ssh-config描述使用boto查询 AWS API并生成一个准备使用的SSH配置文件的非常简单的脚本。 有几个类似的脚本,但我找不到一个能够满足我所有的愿望列表:立即连接...
ssh_config Get()和GetStrict()函数将尝试从$HOME/.ssh/config读取值,然后回退到/etc/ssh/ssh_config 。 第一个参数是要匹配的主机名,第二个参数是要检索的键。 port := ssh_config . Get ( "myhost" , "Port" )...
华为 h3c 3com ras转16进制工具 sshkey.exe华为 h3c 3com ras转16进制工具 sshkey.exe
将生成的公有密钥转化为设备所需要的字符串
sshkey 是放在服务器端,这样pull commit push就无需输入密码,这里提供个教程
C#SSH KEY各种工具文档说明,有集成代码项目 有兴趣可以看看!
ssh_config
华为、思科、W3C RSA认证转16进制
putty,puttygen,sshkey工具合集下载,一次下载,不用东找西找了
随时添加新的有用的东西安装SSC在Linux,BSD和OSX上可用curl -L http://git.io/sshconfig | bash用法添加主机(别名): ssc add NAME USERNAME HOSTNAME [IdentityKey] [PORT]ssc add NAME USERNAME HOSTNAME ...
SSH Config Editor Mac版是一款macOS平台的ssh配置文件管理工具,SSH Config Editor Mac版可以帮助我们在 mac电脑上管理ssh配置文件,我们可以通过这款软件添加或是修改SSH配置文件、添加或是修改端口转发规则、RSA...
ansible-ssh-config 该模块已迁移到改用社区版本。 Ansible的模块,用于配置ssh配置文件。 为什么? 我们有几个库可以在工作中的项目之间共享功能。 这些库位于GitHub上,它们位于自己的存储库中。 我们的部署...
什么是ssh_config? 为什么 我不记得我要管理的所有服务器。 同样,所有服务器都需要所有不同的配置才能与其连接。 我知道〜.ssh / config可以处理此类问题。 我希望它更轻松地处理此文件。 是的,我不确定这是否...
SSH-配置:一个工具,用于管理的ssh配置文件 概述 每次主机更改时更新您的 .ssh/config 文件并没有那么麻烦,但是当它开始频繁发生时,即使是这种麻烦也开始增加。 这是我写来帮助处理这些问题的快速工具。 非常小心...
简单记录了CENTOS6中GIT安装,ssh-keygen生成,客户端使用TortoiseGit加载KEYGEN连接GIT服务器的过程。
gitBash 客户端 ssh 服务器远程登陆神器 Git-2.15.0-64-bit