周末,我正在家里看《最强大脑》,女朋友在一旁刷手机,相安无事。谁知道,刚过了没多久,她突然问我:
想要介绍什么是GitHub,就要介绍下什么是Git,想要介绍什么是Git,那就不得不提版本控制。
我们知道,如果多台计算机在同一个局域网中,是可以进行局域网文件共享的。共享者可以通过设置把自己文件共享给他人进行阅读和修改。
对于同一份共享文件,如果又多个人需要修改的话会发生什么事情呢?假设现在有三个人,A分享了文件夹mhcoding,其中包含了三个文件mhcoding1.png,mhcoding2.png,mhcoding3.png,B和C需要对这份文件进行修改。
B和C分别把mhcoding文件夹拷贝到自己的电脑上,然后进行修改,改完之后需要再把自己修改上传上去。B先改完了之后把自己的文件上传上去,覆盖了A的分享。之后C也改完了,也把自己的改动上传上去。这样,C就会把B的修改覆盖掉。
为了上述这种问题,就需要通过一种方式来在C想要上传文件的时候来提醒他,告诉他需要考虑到B已经改过文件的事情。
比较好的方式就是通过版本控制。
如果使用了版本控制系统,每一个团队成员都可以在任何时间对任何文件毫无顾虑的进行修改,版本控制系统可以提醒我们文件修改冲突,甚至可以帮我们自动把多个人的改动合并到一起。
有了版本控制,我们还可以回溯查看以前某一个版本中具体文件的内容,还可以查看某一次改动的变更内容。非常适合团队协作。
本地版本控制系统
许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。这么做唯一的好处就是简单。不过坏处也不少:有时候会混淆所在的工作目录,一旦弄错文件丢了数据就没法撤销恢复。
![35929bd790b014255204db4a2e31c9f5.png](https://i-blog.csdnimg.cn/blog_migrate/e382055de3f28638397516d06abc8700.jpeg)
![b6c37fcc0672475ed1a1d03f096c9cce.png](https://i-blog.csdnimg.cn/blog_migrate/1094f96462ab3c99437690aebe0943b9.jpeg)
这类系统,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
![38a04b3c4e92abe52f49517db26f53fc.png](https://i-blog.csdnimg.cn/blog_migrate/fd60d95666ff410fd3fe6f0dac08b039.jpeg)
分布式版本控制系统
集中化最显而易见的缺点是中央服务器的单点问题。如果中央服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。
要是中央服务器的磁盘发生故障,碰巧没做备份,或者备份不够及时,就会有丢失数据的风险。
于是分布式版本控制系统面世了。在这类系统中,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。
![7131740733da9a10157421bdc872abdb.png](https://i-blog.csdnimg.cn/blog_migrate/ca614927dd0b8d19f88ebb0ad78ecfb8.jpeg)
git其实就是一款我们前面介绍的分布式版本控制软件,Git具有以下特点:
直接记录快照,而非差异比较
近乎所有操作都是本地执行
时刻保持数据完整性
多数操作仅添加数据
![b9c520b627d5d4704c194ebda601b2ea.png](https://i-blog.csdnimg.cn/blog_migrate/14968b6dfb42a9074397ab88cbc59a89.jpeg)
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。
![8db578734549dc4ab218f6ec40d8c4bd.png](https://i-blog.csdnimg.cn/blog_migrate/d00e4455f9165ef405944ac3684a361d.jpeg)
GitHub是通过Git进行版本控制的软件源代码托管服务,并且,GitHub还引入了一些社交属性。号称是世界上最大的程序员(同性)交友网站。
![be19d7ac251b19e8c782a98762d2782f.png](https://i-blog.csdnimg.cn/blog_migrate/7324c3057039c57a867aa98b7f2b3542.jpeg)
最近比较火的996icu项目我们说他有10多万的Star,就是说由10W+的人关注了这个项目。
![1544a0913feff935cf4f63f3825528e8.png](https://i-blog.csdnimg.cn/blog_migrate/d021ae710efeec9a09c0b98eacb262a5.jpeg)
Dress - 女装大佬聚集地
有129名贡献者在这个名为Dress的项目里集结,上传了数千张女装照,收获了8000余颗星。
![2ed7be4b11c4fe5f02b3586b9bd3a236.png](https://i-blog.csdnimg.cn/blog_migrate/64143d5339a8a6d48e05d3735393a3c3.jpeg)
地址:https://github.com/komeiji-satori/Dress
Thanos - 灭霸命令
Thanos.sh是一个开源的个灭霸命令,可随机删除电脑上一半文件。
![feda6abfb92837d07f5f30ecdaa3b2b9.png](https://i-blog.csdnimg.cn/blog_migrate/260f6f8c8aada823241c0cf0ae9efd6a.jpeg)
nocode - 一行代码都没有
这是一个Issue比项目更精彩的项目,项目中一行代码都没有,Issue中各种装逼。
![07a3268413e3ac67318b3ef9b13f290e.png](https://i-blog.csdnimg.cn/blog_migrate/7c84116e69032a248f8ae0b037379a5b.jpeg)
想问下,Star这个项目的2.7万人是有多无聊???
地址:https://github.com/kelseyhightower/nocode
programmer-job-blacklist 码农找工作黑名单
地址:https://github.com/shengxinjing/programmer-job-blacklist
hangzhou_house_knowledge 杭州买房攻略
地址:https://github.com/houshanren/hangzhou_house_knowledge
howmanypeoplearearound 通过 Wi-Fi 信号估计附近有多少人
地址:https://github.com/schollz/howmanypeoplearearound
参考资料:
https://git-scm.com/book/zh/v1/
https://www.jianshu.com/p/b2ad5d9daa23
https://www.zhihu.com/question/23498424