Введение в Git
2026-02-26 22:46 Diff

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

Основные команды

Git может отслеживать файлы проекта только в том случае, когда они помещены под контроль версий. Для этого нужно зайти в директорию проекта и выполнить команду инициализации git init.

Проект может быть как новый, так и уже существующий. Процесс инициализации от этого не поменяется:

Команда git init создает репозиторий — директорию .git, которая содержит все необходимые для работы Git-файлы.

С помощью команды git status можно посмотреть статус репозитория:

В этом выводе указано, что репозиторий пустой (No commits yet) — в нем нет новых или измененных файлов.

Давайте попробуем добавить несколько файлов:

Теперь снова смотрим на статус:

Git увидел, что в проекте появились новые файлы, о которых ему ничего не известно. Они помечаются как неотслеживаемые файлы (untracked files).

Git не следит за изменениями в таких файлах, потому что они не добавлены в репозиторий.

Добавление в репозиторий происходит в два шага. Первым шагом выполняем команду подготовки файлов git add <путь до файла>:

Смотрим, что произошло:

Файл README.md теперь находится в состоянии «подготовлен к коммиту» — другими словами, файл попал в индекс.

Следующий шаг — это коммит. Под этим термином понимается окончательное добавление в репозиторий, когда Git запоминает файл навсегда и следит за всеми последующими изменениями.

Во время коммита мы берем все подготовленные изменения (они могут включать любое количество файлов) и отправляем их в репозиторий как единое целое. Вот, как он выполняется:

Флаг -m означает message, то есть описание коммита. Коммит можно выполнять и без него, но тогда откроется редактор, в котором нужно будет ввести описание коммита.

Мы рекомендуем делать осмысленные описания — это хороший тон. Пример соглашения по именованию коммитов приведен в дополнительных материалах к уроку.

Перейдем к процессу работы с Git:

Может возникнуть вопрос: зачем так сложно? Зачем отдельно отправлять файлы в индекс командой git add? Почему нельзя добавлять все измененные файлы сразу в коммит?

Как ни странно, такой процесс создан как раз для удобства программистов. Дело в том, что во время разработки может меняться и добавляться много файлов. Но это не значит, что мы хотим добавить все эти изменения в один коммит.

Со смысловой точки зрения, коммит — это какое-то логически завершенное изменение внутри проекта. Его размер бывает очень разным:

  • Маленьким, если мы исправляем одну опечатку в одном файле
  • Большим, если мы внедряем новую функциональность

Главное в коммите — его атомарность. Другими словами, он должен выполнять ровно одну задачу.

Теперь файл README.md находится внутри репозитория. Убедиться в этом можно, запустив команду git status:

Команда git status не выводит файлы, которые добавлены в репозиторий и не содержат изменений. При этом сам файл README.md находится внутри директории hexlet-git.