Начальный ~20 мин чтения

git init, add и commit: первые шаги

Урок 2 из 5 в курсе Git для разработчика

git init, add и commit: первые шаги

три команды создают репозиторий, подготавливают изменения и фиксируют снимок истории.

Почему это важно: Это основной цикл работы с Git. Без понимания staging area легко сделать коммит не с теми файлами или случайно зафиксировать секреты.

Главная идея

Рабочий процесс Git состоит из трёх зон: рабочая директория → staging area (индекс) → репозиторий.

Как это выглядит на практике

  1. git init создаёт папку .git и инициализирует пустой репозиторий.
  2. Разработчик редактирует файлы в рабочей директории.
  3. git add переносит изменения в staging area.
  4. git commit -m 'message' фиксирует снимок из staging area в репозиторий.

Что происходит под капотом

  • git add не копирует файл, а записывает его blob-объект в .git/objects и обновляет индекс.
  • git status сравнивает три состояния: рабочая директория, индекс и последний коммит.
  • Коммит содержит: указатель на tree, указатель на родительский коммит, автора, время и сообщение.
  • git log --oneline --graph показывает историю в виде дерева коммитов.

Типичные ошибки и заблуждения

  • Ошибка: git add . всегда безопасен. Можно случайно добавить .env, credentials или большие бинарные файлы.
  • Ошибка: можно писать любые сообщения к коммитам. Хорошее сообщение описывает 'что' и 'зачем', а не 'как'.
  • Ошибка: каждое сохранение файла — повод для коммита. Коммиты должны быть логически завершёнными единицами работы.
  • Ошибка: git init нужно делать в каждой подпапке проекта. Один репозиторий на проект.

Ключевые выводы

  • Staging area позволяет точно выбрать, что войдёт в следующий коммит.
  • git status — первая команда при любом вопросе 'что происходит'.
  • Хорошее сообщение коммита — коммуникация с будущим собой и командой.
  • .gitignore защищает от случайного добавления секретов и временных файлов.

Термины урока

Working directory: директория с файлами проекта.
Staging area (index): промежуточная зона перед коммитом.
git add: перемещает изменения в staging area.
git commit: фиксирует снимок staging area в репозиторий.

Связь с работой backend-разработчика

Правило: никогда не коммитить .env-файлы, секреты и ключи API. Настройте .gitignore сразу при создании проекта.

Мини-разбор реальной ситуации

Разработчик случайно закоммитил файл .env с production-паролями и запушил на GitHub. Даже удалив файл в следующем коммите, история Git сохранит секреты. Решение — git filter-branch или BFG Repo-Cleaner, что занимает часы. Правильный .gitignore решает проблему заранее.

Что запомнить

  • Три зоны Git: рабочая директория → staging area → репозиторий.
  • .gitignore настраивается в самом начале проекта.
  • Коммиты атомарны: одна задача — один коммит.

Итог

git init, add и commit — основной цикл Git. Понимание staging area даёт контроль над тем, что именно войдёт в историю.