专栏首页mwangbloggit,版本控制界的魔术师(1/18/2018)

git,版本控制界的魔术师(1/18/2018)

git,版本控制界的魔术师(1/18/2018)

不到一个月的时间,git入门的知识学了一次,并且写到了自己的博客上。

作为一个初学版本控制软件并且毫无从业经验的人来说,我学习的第一个版本控制软件就是git。所以很难将它和其他版本控制软件进行比较,git中一些思想也无法判断是不是Linus的独创,唯一能做的就是就事论事,仅仅从git本身来说。

git给我最深的印象,就是分支的操作,这也是我叫它魔术师的原因。

如果要我处理分支,那我肯定是会把文件拷贝一份,然后在复件上进行新的分支操作;据我所知,确实有一些版本控制软件是这样做的。但是git不是!git的分支其实就是一个指向提交对象的指针:提交新的提交对象指针就自动向前移动;恢复到某个提交对象就是把指针指向那个提交对象;删除分支就是删除指针。在当时学到这里并且自己操作的时候,给我惊喜和魔术的感觉。git保存了我们的文件快照(提交对象),而工作目录和分支的操作其实就是取决于我们想要看到哪个提交对象而已!

魔幻的地方在于:我当时自以为分支操作是在操作一份份文件的拷贝,而实际上git却仅仅是打开我们需要的那一份拷贝而已,就像打开一个文件夹那么简单!而一份份拷贝是日产工作中创建的。

git分支操作的乐趣和魔幻给我深深地印象,言语不足以表述当时的震惊。

回头再想,为什么git可以这样做呢?又不禁被git的设计震撼了。我们之所以可以在git上进行如此简单、快速的分支操作,是因为git是基于一个一个的提交对象搭建起来的,git操作就是在这些提交对象上操作。

git就是在连接成树型的提交对象上耍杂技。而提交对象是日常工作中慢慢地添加的,它们一次不会费太多资源,在不知不觉中就搭建了很大的树型结构。git提交对象的设计提高了分支操作性能,而提交对象在日常工作中是必须且逐渐的。

这就像一种哲学,平时在一点点积累,在一点点编织,到了关键时刻,发现只要简单的一招就可以克敌制胜。

理解了之后,我发现git的设计竟然如此的简单、奇妙和神奇。不禁感慨:KISS!

设计一个如此简单、灵活、快速的系统,我不禁为Linus的才智折服!

未来究竟是分布式的还是集中式的?

从git来看,分布式带来了很多好处;与此同时,云计算等技术又在无时无刻地加快集中化的进程。

我想,未来分布和集中会达到一个奇妙的平衡。而每个行业是的平衡点在哪儿?这需要我们去探索和创造。

本文分享自微信公众号 - mwangblog(mwangblog),作者:WM

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-01-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • git简介

    mwangblog
  • git文件状态,暂存与提交

    mwangblog
  • git变基

    mwangblog
  • 珍藏多年的 Git 问题和操作清单

    本文整理自工作多年以来遇到的所有 Git 问题汇总,之前都是遗忘的时候去看一遍操作,这次重新整理了一下,发出来方便大家收藏以及需要的时候查找答案。

    coder_koala
  • 珍藏多年的 Git 问题和操作清单

    本文整理自工作多年以来遇到的所有 Git 问题汇总,之前都是遗忘的时候去看一遍操作,这次重新整理了一下,发出来方便大家收藏以及需要的时候查找答案。

    猿天地
  • 收好这份 Git 命令应急手册,关键时刻可保你一命

    这个网站整理了一些 Git 新手在使用 Git 时常会遇到的各种突发状况,并贴心的给出了应对方案。

    GitHubDaily
  • 如何帮助女神处理Git使用的问题

    这个网站上面整理了一些 Git 新手在使用 Git 时常会遇到的各种突发状况,并贴心的给出了应对方案。

    灵魂画师牧码
  • 解决git不小心提交大文件导致无法提交问题

    更崩溃的是,在此之后又进行了几次提交,可不能因为这次手误丢掉几次提交成果呀。 在网上浏览一圈后找到解决方法:

    宋天伦
  • 学习git常用及高阶命令

    卡少
  • 8分钟 git 一键部署流程、以及常用命令汇总

    在这里,我会按照实际公司开发操作步法,讲解我们如何操作 master 这个分支,具体拆分讲解给大家。

    八点半的Bruce、D

扫码关注云+社区

领取腾讯云代金券