
Git
Git - это распределённая система контроля версий. Предназначена для отслеживания изменений и управления файлами проекта как при самостоятельной работе, так и при совместной разработке.
Содержание
- Создать репозиторий, git init
- Рабочий каталог, working tree
- Индекс, Staging area
- Локальный репозиторий
- Удалённый репозиторий
- Добавить удалённый репозиторий, git remote add
- Изменить имя удалённого репозитория, git remote rename
- Просмотр списка и настроек удалённых репозиториев, git remote, git remote show
- Получить изменения из удалённого репозитория, git pull, git fetch
- Отправить изменения в удалённый репозиторий, git push
- Удаление удалённого репозитория, git remote rm
О системе git
Проект был создан Линусом Торвальдсом для управления разработкой ядра Linux. Программа является свободной и выпущена под лицензией GNU GPL.
Система спроектирована как набор программ, специально разработанных с учётом их использования в сценариях. Это позволяет удобно создавать специализированные системы контроля версий на базе Git или пользовательские интерфейсы.
Git поддерживает быстрое разделение и слияние версий, включает инструменты для визуализации и навигации по нелинейной истории разработки. Git предоставляет каждому разработчику локальную копию всей истории разработки, изменения копируются из одного репозитория в другой.
Возможности
Удалённый доступ к репозиториям Git обеспечивается git-демоном, SSH- или HTTP-сервером. TCP-сервис git-daemon входит в дистрибутив Git и, наряду с SSH, является наиболее распространённым и надёжным методом доступа. Метод доступа по HTTP, несмотря на ряд ограничений, очень популярен в контролируемых сетях, потому что позволяет использовать существующие конфигурации сетевых фильтров.
Особенности реализации
Ядро Git представляет собой набор утилит командной строки с параметрами. Все настройки хранятся в текстовых файлах конфигурации. Такая реализация делает Git легко портируемым на любую платформу и даёт возможность легко интегрировать Git в другие системы (в частности, создавать графические git-клиенты с любым желаемым интерфейсом).
Репозиторий Git представляет собой каталог файловой системы, в котором находятся файлы конфигурации репозитория; файлы журналов, хранящие операции, выполняемые над репозиторием; индекс, описывающий расположение файлов и хранилище, содержащее собственно файлы.
Структура хранилища файлов не отражает реальную структуру хранящегося в репозитории файлового дерева, она ориентирована на повышение скорости выполнения операций с репозиторием. Когда ядро обрабатывает команду изменения (неважно, при локальных изменениях или при получении патча от другого узла), оно создаёт в хранилище новые файлы, соответствующие новым состояниям изменённых файлов. Существенно, что никакие операции не изменяют содержимого уже существующих в хранилище файлов.
По умолчанию репозиторий хранится в подкаталоге с названием «.git» в корневом каталоге рабочей копии дерева файлов, хранящегося в репозитории. Любое файловое дерево в системе можно превратить в репозиторий git, отдав команду создания репозитория из корневого каталога этого дерева (или указав корневой каталог в параметрах программы).
Репозиторий может быть импортирован с другого узла, доступного по сети. При импорте нового репозитория автоматически создаётся рабочая копия, соответствующая последнему зафиксированному состоянию импортируемого репозитория.
Детали реализации в Windows
В Windows-версии (официальная Windows-версия называется mSysGit) используется пакет mSys - порт POSIX-совместимой командной строки под Windows из проекта MinGW. Под mSys перенесены все необходимые для Git библиотеки и инструменты, а также сам Git. При работе с удалёнными репозиториями по протоколу SSL используется хранилище сертификатов из mSys, а не из Windows.
Существует немало графических оболочек для Git для Windows, например TortoiseGit. Все они реализованы через вызовы mSysGit и требуют его установки на машину.
Поскольку в Windows используется отличный от большинства Unix-подобных систем символ конца строки, для работы коллективов, использующих разные операционные системы, предусматриваются параметры (как для клиентов, так и уровня репозитория), обеспечивающие унифицированное представление конца строки.