У вас будет «ствол», теперь называемый «мастер», у вас будут «ветви», теперь называемые «головками», и у вас будут «теги», все еще называемые «тегами», но они не будут папками , они будут » refs ", обозначает ревизии, которые находятся в отдельном пространстве имен внутри репозитория.
Subversion и Git имеют разные способы ветвления. Основная модель Subversion - иметь дерево каталогов с единой глобальной временной шкалой, и если вы хотите выполнить ветвление, вы копируете поддерево в другой каталог.
С другой стороны, у Git есть дерево каталогов с ревизиями, каждая из которых определяет своих родителей, но у каждой ревизии может быть несколько родителей (слияние) и несколько дочерних (ветви). Таким образом, вместо наличия каталогов для веток, вы получаете независимо созданные ревизии. «Ссылки» - это просто имена, связанные с последней ревизией для данной «ветки».
Эта разница является фундаментальной для распределенного контроля версий. Git (и другие распределенные системы) не имеет каких-либо центральных полномочий для сохранения истории линейной, поэтому ревизии могут создаваться независимо в нескольких репозиториях, не зная друг о друге, и система должна их учитывать. Оказывается, обобщение значительно упрощает ветвление и слияние.
Обратите внимание, что в Git ревизии отсутствуют ни в одной ветке. Они просто есть и ветки содержат их. Но как только ветвь слилась или окажется мертвым переулком, вы можете просто удалить указатель «ref», указывающий на него, и полностью забыть о нем (если вы отбросите старые испытания, они будут в конечном итоге собраны с мусором git gc
). Это поможет вам избежать затопления в старых экспериментах, о которых они больше не помнят.