我在花了两个小时左右的时间大致了解了git的工作原理与常用指令后后,就已经能够使用它了。
可是在网上看到的那些教程为什么都是30多集以上的,更有甚者有50多集。
Git作为一个工具,我感觉能用就行了,何必再花这么大心思去学呢?使用者又不去重构一个git,那些教程这么繁杂真的好吗?
因为 “同步” 这2个字本身就很复杂,细分:
只不过,绝大部分人没有深度思考 + 拆分的能力,而觉得 “实时同步“ 很简单,即 “你按我脑海中的想法去做,我想留就留,我想删就删,如果我想错了,你还得救回来“。
你不理解 “同步” 的复杂性,自然也就不理解 “为什么Git要搞这么多事情”。这个复杂性对“云备份”同样适用。
我就亲耳所闻,在星巴克,一个妹子和苹果客服,通话了1个多小时,妹子一直在咆哮,骂iCloud又贵又不好用,反反复复表达3个问题:
这就是上面表述的客观体现。
华为的案例,我认为非常经典,这里单独伶出来分享。
vector同学想要删除华为云的照片,必须要先打开同步,直到本地端和云端同步完成,才可以执行删除操作。而这是华为云的官方操作,并且这个操作流程通过软件以落实到位,不满足要求就不给你删。
我们可以略微分析一下,如果不这么做,对于同一个“删除云端文件”而言,考虑3个本地设备的情形:
1、用户删了云端 A.jpeg,ABC 3个参与同步的设备中 B存在1个有副本,恰巧这个设备最近几个月没同步。这个设备下一次同步后,云端的 A.jpeg 都会再次出现,因为B同步时,A.jpeg会被再次上传到云端。
2、用户删了云端 A.jpeg,ABC3个设备都没有副本,那就真的删了
对用户而言,一个单一的 “删除云端文件操作”,根据不同的情形,它的结果是不单一的。普通客户不会仔细分析背后的机理,而会直接认为 “垃圾软件,删文件都删不了”。
作为产品设计,为了让“单一的操作出现单一的结果“,就必须对上述情况进行简化,例如 ”要删除云端的文件,必须先满足所有设备对 A.jpeg 的共识是一致的“,从而确认 “删除云端“ 的操作,不会因为其他设备的后续同步带来歧义。即使只有1个设备,也按多设备的方案去处理。
一个删除操作都尚且如此,更何况是修改文件内容?