介绍下远程仓库的概念、常见的远程仓库以及常见的操作。
什么是远程仓库
目前,我们的版本库都是在自己的电脑上,并不方便给别人访问,更别说一起维护一个版本库了;如果我们的电脑关机了(或者坏了),岂不是别人就没法干活了?
因此,我们通常需要找一台服务器,存放我们的版本库;然后,其他人就可以访问并克隆这个原始的版本库,并且每个人的版本库都是完整的,不存在主次之分。
Git 仓库托管服务网站
如果为了学习 Git 而搭建一个 Git 服务器是没必要的,有很多网站都提供了 Git 仓库托管服务,我们可以注册后使用:
- GitHub:全球最大的 Git 仓库托管服务网站,2008 年上线,为开源项目提供 Git 存储,无数开源项目迁移到了 GitHub,例如 JQuery,PHP,Ruby。
- Gitee:由于 GitHub 是国外的,在国内有种不可抗力的因素导致经常访问失败,因此国内也上线了一个代码托管平台,那就是 Gitee。
- GitLab:在工作中,我们的项目大部分是公司内的,不太可能开源(例如银行内的项目,源代码保护的非常好),因此有必要公司自己内部搭建一个 Git 仓库,通常使用的就是 GitLab,它是一个开源项目。
关于源代码保护,这里不得不提一下,大部分科技公司都是靠自己的项目来赚钱的,不太可能开源,而且开源了还有被发现漏洞和攻击的风险,所以一般都是用 GitLab 这种可以在内网使用的工具。读者可以参考下华为内是怎么保护的,我在国企工作过,可以说这些经历非常类似了:
百度、阿里、腾讯之类的大公司用 Git 吗?他们如何管理源代码? - 知乎 作者:jiakon
华为用的是 SVN。
SVN 的权限控制,可以控制到目录的。你可以访问到哪个级别的代码,都是可以控制的。
另外,以华为的内网安全措施,周身遍布摄像头,电脑遍布监控软件,访问外网严格受限,所有 USB 接口和网口贴封条,封条上还有什么镭射喷码之类的东西,封条被撕过是可以看出来的,安全管理员定期检查封条。根据安全等级区分绿区、黄区、红区,区域之间物理隔离,访问安全级别更高的区要通过专用远程登录软件,连截屏软件都被禁用。这是一个为了信息安全不惜牺牲效率的企业。这么严格的管控措施,你还想偷偷拷走代码?当然,曾经有神人做到了,比如通过示波器的 USB 口。现在的安全措施又比我在的时候严格了很多。这种事情越来越不可能发生了。
一个在华为待了 9 年的人,离职时都忍痛放弃拷走多年的照片,这是即使走流程申请都几乎不可能做到的事情。谁知道,你图片中是否隐藏了什么保密信息呢?
另外,即使你不小心拥有了不该有的权限,你下载了一些不该拥有的文件。电脑上还有个监控软件,叫关键资产扫描。这个软件也是不能关掉的。安装时,会全盘扫描一次你的电脑,每周还会定时全盘扫描一次,看看你电脑中是否有超出你权限之外的文档和代码,如果有,要么删除,要么申请权限。
有很多不但视源代码如生命,而且视员工为窃贼的公司,会在版本控制系统里设置一套完善的权限控制,每个人是否有读写权限会精确到每个分支甚至每个目录下。因为 Git 是为 Linux 源代码托管而开发的,所以 Git 也继承了开源社区的精神,不支持权限控制。不过,因为 Git 支持钩子(hook),所以,可以在服务器端编写一系列脚本来控制提交等操作,达到权限控制的目的。Gitolite 就是这个工具。--引自 搭建 Git 服务器 - 廖雪峰的官方网站
另外,如果你访问不了 GitHub,可能是某种不可抗力的问题,请自行搜索解决,可参考我的下一篇博客。
创建公钥和私钥
我们本地 Git 仓库和远程仓库之间的传输是通过 SSH 协议加密的,因此需要创建公钥和私钥。
PS:公钥和私钥其实就是两个字符串,用于身份认证;我们先将公钥配置到远程仓库上,然后提交的时候通过 SSH 协议来加解密数据,验证我们的身份。感兴趣的同学可以学习下:非对称加密算法 - 廖雪峰的官方网站
Git 也支持其他协议,例如 HTTPS,但是不太安全,并且比较慢,较少使用。
打开命令行(或者 Git Bash),输入以下命令来创建 SSH Key:
$ ssh-keygen -t rsa -C "[email protected]"
注意邮箱换成你自己的,一路回车,使用默认值即可。
如果一切顺利的话,可以在用户主目录里找到 .ssh
目录,里面有 id_rsa
和 id_rsa.pub
两个文件。
PS:对于 Windows 用户来说,用户主目录是 C:\Users\你的用户名
,例如我的是:
对于 Linux 用户:
cd ~/.ssh
ssh-kengen -t -a rsa
这两个就是 SSH Key 的秘钥对,可以右键用记事本之类的工具打开。id_rsa
里的内容是私钥,不能泄露出去,id_rsa.pub
里的内容是公钥,可以放心地告诉任何人。
远程仓库就是通过公钥来识别你的身份的,对于那些没有对应私钥的人来说,是不能修改你的仓库里的内容的。
在远程仓库里配置公钥
这里假设读者已注册好(注册就不用演示了吧
标签:git,remote,仓库,--,Git,更上一层楼,协作,远程 From: https://www.cnblogs.com/PeterJXL/p/18432947