git发行的本质

时间:2014-09-19 13:59:10

标签: git dvcs

如果我执行以下操作并以下内容:

  1. 在我的电脑上创建个人仓库(让我们称之为A
  2. 在服务器上创建一个裸仓库(称之为B
  3. 远程将裸仓库添加到个人仓库(即远程添加BA
  4. B克隆到第三台计算机(称为此新个人仓库C
  5. 现在让我们假设服务器已被破坏,因此B不再存在。在这种情况下,如果我从A推送更改,C仍然可以获取这些更改吗?

    或者换句话说,git是否会以“链式”的方式对遥控器进行更改,或者对“群集”中的所有遥控器进行相互了解?

2 个答案:

答案 0 :(得分:1)

没有。 A会将B列为远程,C会将B列为远程,但他们不会相互了解。如果您销毁B并且未向A添加另一个遥控器,那么您无法将更改从A 推送到

答案 1 :(得分:1)

首先,您从未将任何更改从A推送到B。因此,虽然A知道B,但BA一无所知,也不包含任何数据。

A推送到B可以从A开始工作(因为A知道B)。数据将以B结尾。无论有多少其他回购信息了解BB都不会进一步推动这些变化。相反,其他回购必须 B

如果我们假设您至少从A推送到B并克隆到C,则可以将C作为远程添加到A然后推动它。但C永远不会“神奇地”包含在其他回购之间推送的数据。只有当有人推送或从某个地方拉出时,数据才会复制到回购中。

因此,对于每个操作,只涉及2个回购。