git init, add и commit: первые шаги
три команды создают репозиторий, подготавливают изменения и фиксируют снимок истории.
Почему это важно: Это основной цикл работы с Git. Без понимания staging area легко сделать коммит не с теми файлами или случайно зафиксировать секреты.
Главная идея
Рабочий процесс Git состоит из трёх зон: рабочая директория → staging area (индекс) → репозиторий.
Как это выглядит на практике
- git init создаёт папку .git и инициализирует пустой репозиторий.
- Разработчик редактирует файлы в рабочей директории.
- git add переносит изменения в staging area.
- 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 защищает от случайного добавления секретов и временных файлов.
Термины урока
Связь с работой 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 даёт контроль над тем, что именно войдёт в историю.