gpt4 book ai didi

git - Git 是分布式的还是去中心化的?

转载 作者:行者123 更新时间:2023-12-04 12:08:22 31 4
gpt4 key购买 nike

我知道 git 使用版本控制来跟踪文件。而且它也是分布式的,这意味着不止一台计算机存储相关文件。但我怀疑 git 是分布式的还是去中心化的?如果是去中心化的,那为什么还需要github、gitlab呢?使用 Github 和 Gitlab 使其分布式(一个主多个从节点)对吗?因为,我们有一个 master(如 github),客户(合作者)依赖于它。但是 git 利用了区块链(各种)技术,这让我认为 git 是去中心化的,因为所有区块链技术应用程序,如比特币、以太坊都是去中心化的。与比特币不同,git 中的节点之间没有点对点通信,这与区块链的去中心化性质相矛盾。我们需要 github 来与其他节点通信,或者如果我们要与其他节点协作。请有人告诉我 git 是分布式的还是去中心化的?

最佳答案

Git 两者兼而有之(两者都不是)。
它是分布式...
...从某种意义上说,任何拥有特定存储库克隆的人理论上都与拥有相同存储库克隆的任何其他开发人员“平等”。使用这种方法的主要原因之一是允许任何开发人员继续他们的工作,而无需始终连接到集中式主服务器。如果您有自己的完整副本,并且与其他副本“相同”,则可以针对它进行开发并稍后同步。
它是去中心化的......
...主要出于上述相同的原因。核心概念之一是没有“主”服务器。问题在于,在许多情况下(例如大公司的软件工程师),确实需要有一个集中的主人。并不是说 Git 不适合这种类型的工作流( clone --> develop --> commit --> push to central repo ),而是它不会强制您这样做。由于这是一种无处不在的工作方式,因此在 Git 之上使用 GitHub 来提供所需的结构以实现这种类型的开发周期已成为常态。
两者都不是?
因为它不强制你使用任何特定的工作流模型,所以得出 Git 既不是分布式也不是去中心化的结论也许也是合理的:它在很大程度上超越了这些实现细节,允许用户随心所欲地使用它。它包括抽象和灵活的功能,几乎可以适应任何工作流程,但如何工作由用户决定。这也是Git对于新手来说如此难学的主要原因之一。
所以请记住,Git 和 GitHub 是不一样的。 Git 是一个版本控制工具,而 GitHub 是一个协作工具,恰好使用了 Git,并且为特定类型的开发周期提供了一个框架,该框架为许多人非常熟悉和熟悉。
此外,git 可以与任何主机通信,它绝不依赖于 GitHub 来提供集中化,即使我们经常将其视为如此。 Git 可以使用 SSH、HTTP(S) 甚至它自己的专有协议(protocol)从任何其他系统上的存储库推送和获取数据,前提是用户能够登录到该主机。
区块链呢?
Git 确实使用与许多常见区块链实现(例如:比特币、以太坊)相同的底层数据结构——称为哈希树(或默克尔树)。更重要的是,git 和区块链都有一些非常相似的要求:它们都寻求去中心化和分布式。但是这些功能如何适应这两种技术的总体目的是完全不同的。
对于区块链,去中心化的概念主要集中在保持共识的需要上:大多数节点都同意他们正在构建的分类账内容,这对区块链的完整性至关重要。那是因为每个条目都基于前一个条目的正确性。没有达成共识,区块链的整体用途尚不清楚。
将其与 Git 进行比较,虽然有些人可能会争辩说,共识对于维护存储库的完整性也很重要,但对于 Git 作为工具的一般用途而言,它并不是那么固有。同一个 repo 的两个克隆可能会严重不同步,而不会削弱我使用它们中的一个(或两个)进行版本控制的能力。只要我不介意进行一些手动 merge ,它也不排除我能够利用两者的一部分。 Git 甚至允许进行一些非常广泛的“树手术”,在其中我可以自由地重写历史,从不同来源(甚至没有共同祖先的来源)中挑选片段,事后将它们拼接在一起,以创建一系列纯虚构的事件.
因此,虽然这两种技术有一些表面上的相似之处——有些也有一些更深层次的相似之处——但它们服务于不同的目的,有自己独特的设计要求,因此它们不能直接相互比较。

关于git - Git 是分布式的还是去中心化的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59509764/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com