Discuss / Git / 评论看完后,说说的感受和理解,望指点

评论看完后,说说的感受和理解,望指点

Topic source

看完文章,刚开始看评论的时候,感觉:“一个一个问题的问题真好,我也有这样的疑问”,各位网友的回答也都很清楚,直到我看到 -廖雪峰- 老师的评论

集中式和分布式的区别是:
你的本地是否有完整的版本库历史!
假设SVN服务器没了,那你丢掉了所有历史信息,因为你的本地只有当前版本以及部分历史信息。
假设GitHub服务器没了,你不会丢掉任何git历史信息,因为你的本地有完整的版本库信息。你可以把本地的git库重新上传到另外的git服务商。

才感觉真正明白(当然我也不太清楚我是不是真的明白)

我的理解是:Git 其实就是每个人电脑上都装一个svn服务器,你写了代码提交到自己电脑服务器上就是Commit;但是如果你想多人协作,就要把你的改动发送到你**每一个同事 **的svn服务器上就是push;

关于有人有疑问说

分布式的版本控系统如果要在多个人之间协作不也是需要一个像github一样的的远程版本库吗,这与集中式的有什么区别呢?

接着按照上面的理解,假如你还有10个同事,你每一次更改都要提交10次,其他同事有更改也要分别向我们提交,是不是觉得好烦,所以我们说干脆找一台固定电脑(服务器)用来统一规定把修改推给这台电脑,这样只需要提交1次就行了,其他人去这台机器上同步就好了。

发现没有,Git的中央服务器可以没有,我们只是为了方便才这么做的。

此时,如果这个中央服务器坏了,你只需要重新弄个电脑,把自己电脑上的同步一份过去,大家约定好都提交到这个新电脑上就行了。【所有的版本和历史都在,因为大家电脑上都是一样的】


而集中式的SVN就不同了,你从中央服务器上下载好完整的代码,正常工作(写代码)是可以,但是如果断网了,你就无法回滚版本;这时你可能谁说,先不提交,等联网了我再提交。

不好意思,这次断网是因为服务器报废了,是蒸发的那种,硬盘灰飞烟灭了。等你再次连上网的时候,就是你永远丢失了历史版本的时候,想回滚就只能靠做梦了。


~~~~~~~我的理解大概是这样的,不知道对不对~~~~~

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

你的理解是对的,比特币的区块链设计就类似git,人手一份全账本,只是用p2p全网同步,而git通常搞个中心化服务来同步

svn像银行,完整账本只有银行有,作为终端节点可以向银行查询账本,但如果某一天银行没了,整个完整账本就没了

分布式的核心设计是同步,而不是主从

软件架构,核心思想其实是非常简单的

嗯嗯,也看了老师写的 “区块链教程”, 也很牛的。我之前看过一本叫《图说区块链》的书,虽然有图,但第一次接触还是很懵,可能跟思维方式有关系,只看图没代码总感觉的迷迷糊糊。这次结合一丢丢代码重新看,对区块链有了更清晰的认识,。感谢大佬。

哥们的理解很到位,看完后豁然开朗。

霍铃震霍

#5 Created at ... [Delete] [Delete and Lock User]

Linus不会就是中本聪吧

以父之名

#6 Created at ... [Delete] [Delete and Lock User]

我有个问题,既然员工A的电脑保存了所有版本的历史信息,为什么做了修改还需要提交,员工B里面不应该自动更新了吗?如果A做了修改后,还没传给B,A的电脑就坏了(而不是服务器),那不还是失去了这些更改信息吗?回滚不也是只能靠做梦吗?有什么区别呢?

🐾

#7 Created at ... [Delete] [Delete and Lock User]

第一次接触git,后面教程还没看,看到这里我也有这个疑问,那比如A把信息传给了某个电脑(服务器),但是BCDEF没有从这个电脑同步,服务器就坏了,那是怎么保持的最新的呢?

jwyoung123

#8 Created at ... [Delete] [Delete and Lock User]

“集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。”

“你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。”

----这个不是也需要联网吗?而且如果有多人N协作时,一份修改我得发送给N-1个人,这不是更耗时吗?

罗一

#9 Created at ... [Delete] [Delete and Lock User]

所以需要github等中间商作异步转发,中间商就是中间件,没有github这个异步中间件就得依次转发给N-1个同事,有中间件就不一样了。

另外中间件不等于集中化,因为GitHub实际上只是进行版本的通知,每个同事都有完成的版本库,而不是集中式的中央仓库才有完整的版本库。

A把信息传给了某个电脑(服务器),但是BCDEF没有从这个电脑同步,服务器就坏了,那是怎么保持的最新的呢?

服务器就坏了,A难道跟着一起死了?没死,下次,在提交上去就是了。如果,A和服务器一起死了,最多损失的,损失的就是A最后提交的那部分,其他人的不会影响


  • 1
  • 2

Reply