git - это инструмент управления распределенным управлением исходным кодом. Чтобы понять, что означает распространение в этом контексте, полезно сравнить его с нераспределенным, например. подрывная деятельность.
В Subversion есть центральное хранилище, которое является авторитетным. Если вы извлекаете хранилище, вы получаете только рабочую копию (например, самую новую ревизию), но не полную историю, и если центральное хранилище не работает, вы не можете зафиксировать другую ревизию.
Напротив, у git - по крайней мере с технической точки зрения - нет центрального хранилища. Поэтому, когда вы извлекаете репозиторий в git, вы клонируете полную историю и фиксируете все в локальном репозитории. Затем вы можете извлекать и / или выдавать коммиты из и / или в другие репозитории, чтобы синхронизировать изменения и работать совместно.
Хотя часто бывает так, что у вас есть авторитетная ветвь в «центральном» репозитории (например, основная ветвь в общедоступном GitHub-репозитории вашего проекта), где желаемые изменения объединяются, это обычная практика, которая работает для многих проектов. Если у вас есть такой git-репозиторий, ваш «оригинальный» репозиторий (где вы инициализировали и добавили первый коммит) не обязательно должен быть подключен постоянно. С другой стороны, если GitHub выходит из строя, каждый узел может выступать в роли хаба, поскольку у него более или менее полная история проекта.
Примечание: если вы разветвляете свой код и фиксируете эти ветви, «оригинальный» код расходится и то же самое с удаленными репозиториями. Из-за этого GitHub и другие сервисы вызывают копирование репозитория.
Я рекомендую Pro Git Book для дальнейшего чтения по этой теме. И если у вас есть время, вы можете посмотреть Линуса Торвальдса на git .