git add и git commit
Двухшаговый процесс сохранения изменений в Git: сначала staging-area (индекс), затем фиксация в историю коммитом.
Зачем нужно
Git не сохраняет изменения автоматически — разработчик сам решает, что войдёт в следующий commit. git add переносит изменения в staging-area (индекс), где можно собрать ровно те файлы и фрагменты, которые логически связаны. git commit фиксирует содержимое индекса как снимок состояния проекта с сообщением, автором и временной меткой. Такой двухшаговый подход даёт полный контроль над историей.
Где используется
- Каждый раз при сохранении результата работы в историю репозитория
- Разбивка большого изменения на несколько атомарных commit-ов
- Подготовка только части изменённых файлов (patch staging)
Основной контент
Состояния файлов
Рабочая директория → Staging (индекс) → История (.git)
(edit) git add git commit
git add
# Добавить конкретный файл
git add README.md
# Добавить все файлы в текущей папке рекурсивно
git add .
# Добавить файлы по шаблону
git add src/*.js
# Интерактивный выбор изменений (patch mode)
git add -p
# Добавить только уже отслеживаемые файлы (без untracked)
git add -u
git commit
# Commit с сообщением в командной строке
git commit -m "feat: добавить форму авторизации"
# Открыть редактор для написания длинного сообщения
git commit
# Добавить все изменённые отслеживаемые файлы и сразу закоммитить
git commit -am "fix: исправить опечатку в заголовке"
# Исправить последний commit (сообщение или состав файлов)
git commit --amend -m "feat: добавить форму авторизации и валидацию"
# Commit с пустым сообщением (для технических нужд)
git commit --allow-empty -m "chore: trigger CI"
Просмотр состояния перед commit
# Какие файлы в staging, какие изменены, какие untracked
git status
# Что именно изменилось в staging
git diff --staged
# Что изменилось но ещё не добавлено в staging
git diff
Пример типичного workflow
# 1. Отредактировали файлы
# 2. Посмотреть что изменилось
git status
# 3. Добавить нужные файлы
git add src/auth.js src/auth.test.js
# 4. Проверить что попало в staging
git diff --staged
# 5. Зафиксировать
git commit -m "feat(auth): добавить JWT-авторизацию"
Частые ошибки
git add .вместо выборочного добавления — в commit попадают временные файлы,.env, артефакты сборки; используй gitignore- Коммитить слишком много за раз — один commit должен делать одно логическое изменение
--amendна опубликованном commit — перезаписывает историю, которую уже видят другие; используй только для локальных commit-ов- Бессмысленные сообщения: "fix", "wip", "changes" — невозможно понять историю; следуй Conventional Commits