Git

распределённая VCS · Linus Torvalds · 2005

Что это

Git — распределённая система контроля версий. Создан Линусом Торвальдсом в апреле 2005 года за 2 недели, после того как BitKeeper (использовавшийся для разработки ядра Linux) прекратил бесплатную лицензию для opensource-разработчиков.

Название означает «сволочь, придурок» на британском сленге. Линус: «I'm an egotistical bastard, and I name all my projects after myself. First Linux, now Git».

Отличие от классических VCS

SVN/CVS (централизованные)Git (распределённая)
Репозиторийодин на сервереу каждого разработчика полная копия
Оффлайн-коммитынельзяможно
Веткидорого (копирование)дёшево (указатель)
Скоростьсеть-зависимолокально всё быстро
ЦелостностьслабаяSHA-1 (сейчас SHA-256) хэши всего

Основные концепции

Базовые команды

git init                    # создать репозиторий
git clone https://...       # склонировать
git status                  # что изменилось
git add файл                # подготовить к коммиту
git commit -m "сообщение"   # закоммитить
git log                     # история
git branch                  # список веток
git checkout -b новая       # создать ветку
git merge другая            # влить ветку
git push origin main        # отправить
git pull                    # забрать

Модель хранения

Внутри Git — key-value база в .git/objects/. Четыре типа объектов:

Ключ — SHA-1 хэш содержимого (с 2018 идёт переход на SHA-256).

Хостинги

См. также