相信大多数程序员都把自己的代码托管到GitHub上吧,之前我只知道GitHub是一个代码托管仓库,把自己写的代码传上去,它会替你保存,作为程序员小白的我,其实真的傻傻分不清Git和GitHub到底是什么,虽然我用GitHub托管代码有一段时间了,但是到目前为止还没有一颗小星星,尴尬,,但,没关系,我相信只要我坚持、不断提升早晚有一天会有人点亮我的小星星。
直到前两天看了一篇文章,才搞懂什么是Git、什么是GitHub。
下面我就来讲一讲Git和GitHub吧
首先我们得知道为什么会存在Git和GitHUb?
我们都知道,在同一局域网的计算机是可以进行文件共享的,假如张三共享了一个文件,现在李四和王五要对这个文件进行修改,李四修改完之后传上去就会把张三上传的文件覆盖掉,王五修改完后上传上去就会把李四的文件覆盖掉。
那如何解决覆盖这个问题呢?
最早人们想到的方法就是版本控制,使用了版本控制,每一个团队成员就可以“肆无忌惮”的进行修改了,因为版本控制会提醒我们文件修改冲突,还可以自动的把多个人的改动合并到一起。
版本控制的方式有很多种,我们来看看下面这几种:
本地版本控制系统
为什么会出现本地版本控制系统呢?
那是因为许多人习惯复制整个项目目录的方式来保存不同的版本(我就是这样,脸红),一般只需要把名字改一下就行,这样做就是很简单,不过也有很多不好的地方,就是:有时候会混淆所在的工作目录,如果弄错文件数据就丢了,并且没有办法撤销恢复。
为了解决这个问题,本地版本控制系统就诞生了。
本地版本控制系统大多采用某种简单的数据库来记录文件的历次更新差异。
集中化的版本控制系统
集中化的版本控制系统出现的原因:为了让在不同系统上的开发者协同工作。
这类系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,协同工作的人通过自己的客户端连到这台服务器,取出最新的文件或者提交更新。
这样做的好处就是每个人都可以在一定程度上看到其他项目中的其他人正在做什么。管理员也可以很轻松掌握每个开发者的权限,这样管理起来也很轻松。
分布式版本控制系统
分布式版本系统控制出现的原因:集中化有一个很大的缺点,如果中央服务器宕机了,那谁都无法提交更新,就没有办法协同工作了,万一中央服务器的磁盘发生故障,碰巧没做备份,就会丢失数据,所以分布式版本控制系统诞生了。
在分布式版本控制系统中,客户端并不只是提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这样一来,就算服务器出现故障了,在事后我们可以用任何一个镜像出来的本地仓库恢复。
知道了前边这些知识,下来理解Git和GitHub就很容易了。
Git
Git其实就算分布式版本控制软件。
特点:
- 直接记录快照,而非差异比较
- 近乎所以操作都是本地执行
- 时刻保持数据完整性
- 多数操作仅添加数据
GitHub
GitHub是一个面向开源及私有软件项目的托管平台,只支持git作为唯一的版本库格式进行托管。
通俗的来说,它其实和微博是一样的,你可以转发别人的项目来自己修改、可以自己写代码、关注某人、关注某个项目(给某个项目点赞)。