Git和比特币有一个共同点
那是时候了。
您是否曾经陷入Git混乱之中?
如果您具有大量的编程经验,并且已经使用Git一段时间,那么此问题的答案很可能是肯定的 。
由于存在许多命令和复杂的规则,混乱的Git状态可能与编写不良的应用程序一样难以理解。 即使您有更多使用Git的经验,但事后看来,要恢复错误的基准也不容易,除非您首先了解造成混乱的所有步骤。
如果您不知道所有步骤(例如,您在帮助其他人),最简单的方法就是返回并重新开始。 将状态重置为可工作的提交,然后再次重新应用所有更改,最好是从git reflog
挑选每个提交。
为了事后修正Git混乱,您首先需要知道创建该混乱状态的所有步骤。
Git实现了事件源。
事件源与为比特币提供动力的架构相同。 您可以说提交与在区块链上存储“已确认交易”的方式相同,将提交在Git存储库中存储“已提交”事件。 不同之处在于,没有人需要等待提交确认。
Git就像时间。
每次提交时,您都在滴答滴答地指示前进。
您可以通过将状态重置为上一个时间点来回到过去。 但是,如果您改变了过去并回到了未来 ,则可能会有改变未来的副作用。
因此,如果您更改了过去,Git将必须创建一个新的分叉时间轴,并修改自更改点以来所有提交的哈希值。 Git将要求您检查所有向前的更改,以确保它们仍处于有效状态。 这是避免“ 时间悖论 ”发生的一种方法。
Git的事件源模型非常有用。 它使系统安全且可调试 。
如果没有人能不经意地改变过去,那意味着您的代码将免受恶意更改的影响 。 如果您可以追溯到过去,则意味着您可以在首次引入问题时调试代码。
Git就像时间。 如果您更改过去,则未来将会受到影响。
Git允许高可用性。
它使您可以从多个remote
存储库中进行读取 。 这些存储库可以是项目的分布式副本,因此许多人可以通过网络进行协作。
-
git fetch sam
。 -
git fetch mary
。
如果由于开发人员受到总线或410 GONE的 攻击而使一台计算机与网络断开连接,则该项目将仍然可用并且工作将继续。
但是,大多数项目都使用Github之类的集中式服务来存储代码。 他们没有利用Git的高可用性功能。 如果中央服务器拔掉插头 ,其他所有人都必须停止。
-
git fetch origin
。
对于许多项目,默认的origin
远程已成为Github的同义词。
Git允许分散。 但是,人们坚持以集中方式使用它。
与比特币类似,Git是精心设计的工程,旨在分散 , 安全和可调试 。 事件源是核心架构, Merkle树是数据结构。 它使用了世界运作的许多基本原理,并将其转变为有效的源代码控制系统 。
过去,我写过有关《医生和手术刀》的文章 。 该帖子介绍了开发人员如何倾向于发现问题并归咎于他们的工具。 但是,在大多数情况下,问题不是工具,而是缺乏对基础知识的了解。
Git就是一个很好的例子。
如果您不了解基本原理,则将无法在如何使用其命令以及如何推理其复杂规则方面做出正确的决定。 也许您可以记住什么是git commit
,但注定总是会在第一次看到代码冲突时总是陷入无法挽回的混乱之中。
有时,最好的长期策略不是学习如何解决问题和记住命令,而是从一开始就拥有足够的知识来做到这一点,这样一来您就永远不会陷入混乱。
如果您不这样做,那么至少互联网已经覆盖了您 。
谢谢阅读。 如果您有任何反馈意见,请通过Twitter , Facebook或Github与我联系。
From: https://hackernoon.com/git-and-bitcoin-have-one-thing-in-common-e11d87b36302