Для понимания основ работы с Git, понимание структуры данных совершенно необходимо.
Итак, во-первых:
Git – распределённая VCS, это не типичное клиент-серверное приложение, и у каждого разработчика может хранится весь проект, со всеми тэгами, ветками, историей и т.п.
Тем не менее, очевидно что данные таки лучше хранить в надёжном и доступном месте, которое будем называть “основным репозиторием”, хотя, повторюсь, git это распределённая с-ма.
В качестве “основного репозитория” используют либо on-premise (например, GitLab ), так и SaaS (например GitHub, BitBucket, AWS CodeCommit).
Для меня наиболее удобным вариантом является BitBucket, т.к. он позволяет создавать приватные репозитории бесплатно и отлично интегрируется с другими инструментами Atlassian.
Во-вторых, для каждой “версии” хранится не набор изменений в файлах относительно предыдущей версии, но все файлы проекта для этой версии.
Хотя, если с предыдущей версии файл не изменён, хранится ссылка на него, но это уже относится к реализации, а не принципу. Из этого очевидно, что для мажорных версий есть смысл вносить изменения во все файлы, чтобы иметь действительно полную копию данных, без всяческих ссылок.
Собственно принцип хранения данных:
Для обеспечения целостности данных Git использует SHA-1 хэши, за счёт чего работает надёжно и достаточно быстро.
И последнее:
Т.к. В Git “основной репозиторий” номинальное понятие, чтение и сохранение данных происходит в локальный репозиторий.
Для синхронизации локального репозитория с “основным” необходимо выполнять дополнительные действия.
Очевидно, что при таких синхронизациях возможны конфликты, особенно если над проектом работает большая команда.
На практике, такие конфликты даже полезны, т.к. помогают быстро обнаружить и решить организационные проблемы.
Т.к. локальный репозиторий находится в локальном каталоге, может сложиться впечатление что для добавления нового файла в репозиторий достаточно скопировать его в каталог с репозиторием.
Это совершенно не так, процедуру добавления в репозиторий можно представить так:
Оглавление цикла статей по Git.
Надеюсь озвученная информация будет полезной, а если нужна будет помощь — используйте форму на главной странице моего сайта.