Git: полное руководство для начинающих и не только

Статей: 31

Git — распределённая система контроля версий: она запоминает каждое сохранённое состояние проекта, позволяет вернуться к любому из них и даёт нескольким людям работать над одним кодом параллельно, не мешая друг другу. Сегодня Git — стандарт индустрии: он нужен разработчикам, тестировщикам, DevOps-инженерам, аналитикам и техническим писателям.

Это руководство — карта темы. Здесь собраны ключевые понятия, общий рабочий цикл и порядок, в котором удобно осваивать Git. Каждая тема подробно разобрана в отдельной статье с примерами команд, типичными ошибками и способами их исправить.

Git коротко

Git создал Линус Торвальдс в 2005 году для разработки ядра Linux. Главная особенность — распределённость: у каждого участника полная копия истории, поэтому коммиты, ветки и просмотр истории работают локально и мгновенно. Сервер нужен только для обмена изменениями.

Если вы только знакомитесь с темой, начните со статьи о том, что такое Git и какие задачи он решает: там разобрана расшифровка названия, история и отличие от других систем. Важно сразу развести два понятия: Git — это программа, а GitHub и GitLab — сервисы для хостинга Git-репозиториев с pull request, ревью и CI. Отдельный материал объясняет, чем отличаются Git и гит хаб и как они связаны.

Ключевые понятия

Репозиторий

Репозиторий — проект вместе со всей его историей. Технически это скрытая папка .git в корне проекта, где лежат объекты (снимки файлов, коммиты) и ссылки (ветки, теги). Локальный репозиторий создаётся командой git init, копия существующего — через git clone.

Коммит

Коммит — зафиксированный снимок проекта с автором, датой, сообщением и ссылкой на предыдущий коммит. Цепочка коммитов и есть история. У каждого коммита уникальный хеш, например a1b2c3d, по которому к нему можно вернуться.

Индекс

Индекс (staging area) — промежуточная зона между файлами на диске и историей. В него вы складываете то, что войдёт в следующий коммит. Благодаря индексу можно закоммитить только часть изменений и делать коммиты атомарными: одно логическое изменение — один коммит.

Ветка и HEAD

Ветка — лёгкий подвижный указатель на коммит. Создать ветку в Git ничего не стоит, поэтому под каждую задачу заводят отдельную. HEAD показывает, где вы сейчас находитесь: обычно на какой-то ветке.

Remote

Remote — удалённый репозиторий, с которым вы обмениваетесь коммитами; по умолчанию он называется origin. Локальные ветки синхронизируются с удалёнными через push, fetch и pull.

Как устроена работа: рабочий цикл

Почти вся ежедневная работа с Git повторяет один и тот же цикл:

  1. Забрать свежие изменения команды из удалённого репозитория.
  2. Создать ветку под задачу.
  3. Изменить файлы, посмотреть статус и дифф.
  4. Добавить нужное в индекс и сделать коммит; повторять, пока задача не готова.
  5. Отправить ветку на сервер и открыть pull request.
  6. После ревью влить ветку в основную и удалить её.
git switch main
git pull
git switch -c feature/search
# ...правки...
git status
git add src/search.js
git commit -m "Добавить поиск по каталогу"
git push -u origin feature/search

Изменения последовательно проходят через четыре места: рабочая директория → индекс → локальный репозиторий → удалённый репозиторий. Если держать эту схему в голове, назначение большинства команд становится очевидным.

С чего начать изучение Git

Ниже — рекомендуемый порядок. Каждый шаг опирается на предыдущий, поэтому лучше не перескакивать.

1. Установка и настройка

Сначала нужно установить Git: на Windows вместе с ним ставится git bash — терминал с привычными Unix-командами. Затем — настройка Git: имя и почта автора через git config, ветка по умолчанию и SSH-ключи для доступа к серверу.

2. Первый репозиторий и коммиты

Создайте git репозиторий командой git init или скачайте готовый через git clone. Дальше осваивайте базовый цикл: git status, git add и git commit, а также исправление последнего коммита через --amend. Сразу настройте git ignore — файл .gitignore, чтобы в историю не попали зависимости, сборка и секреты.

3. Чтение истории

Умение читать историю не менее важно, чем умение её писать. git log показывает коммиты, git diff — разницу между версиями, git show — содержимое коммита, git blame — автора каждой строки.

4. Ветки

Следующий шаг — git branch: создание, переключение и удаление веток. Параллельно стоит разобраться, когда использовать git checkout, а когда более новые git switch и git restore.

5. Слияние и конфликты

Ветки нужно объединять: git merge вливает одну ветку в другую, а при пересечении правок возникают конфликты, которые разрешаются вручную. Альтернативный способ интеграции — git rebase, который переносит коммиты и делает историю линейной. Когда базовая механика понятна, прочитайте сравнение merge vs rebase — это один из самых частых вопросов в командах и на собеседованиях.

6. Работа с удалёнными репозиториями

git push отправляет ваши коммиты на сервер. Чтобы получить чужие, используют git pull или git fetch — разница между ними принципиальна и разобрана отдельно. Здесь же пригодится понимание процесса pull request.

7. Отмена ошибок

Git прощает почти любые ошибки, если знать инструменты. git reset перемещает ветку назад и переписывает историю, git revert безопасно отменяет опубликованный коммит новым коммитом. А git reflog помогает вернуть коммиты, которые казались потерянными после неудачного reset или rebase.

8. Продвинутые инструменты

Когда основа освоена, расширяйте набор: git stash временно откладывает незаконченную работу, git cherry-pick переносит отдельный коммит между ветками, git tag отмечает версии релизов, git bisect двоичным поиском находит коммит, сломавший код. Для больших проектов пригодятся git submodule для вложенных репозиториев, git lfs для крупных бинарных файлов и git worktree для работы с несколькими ветками одновременно в разных папках.

9. Командные процессы и инструменты

В команде важно договориться о правилах веток. Популярные модели — git flow, GitHub Flow и trunk-based development; от выбора зависит, как часто вы сливаете код и как выпускаете релизы. Если удобнее работать мышью, посмотрите обзор GUI-клиентов Git — но лучше освоить их после командной строки.

10. Шпаргалка, собеседование и дальнейший путь

Для быстрого поиска нужной команды держите под рукой шпаргалку git команды, сгруппированную по задачам. Перед интервью пройдитесь по вопросам git собеседование — они хорошо показывают пробелы в понимании. А если хотите выстроить обучение git системно, по этапам и с тренажёрами, начните с отдельного плана изучения.

Как учить Git эффективно

Git осваивается только практикой. Заведите репозиторий-песочницу и пробуйте каждую команду руками: создайте конфликт и разрешите его, сделайте reset --hard и восстановитесь через reflog, сожмите коммиты интерактивным rebase. После каждой команды смотрите git status и git log --oneline --graph --all — так быстро складывается картина происходящего.

Опорой послужат официальная документация на git-scm.com и бесплатная книга Pro Git, а увидеть граф коммитов помогают интерактивные тренажёры. Весь путь — от первого git init до pull request в командном проекте — разобран на практике в курсе по Git на Skillaria.

Основы и понятия

Пошаговые инструкции

Сравнения

Шпаргалки

Вопросы на собеседовании

Как научиться