linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
Intro
Lessons
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Главы
  • How it works
  • Уроки
  • База знаний
  • Собеседование
home/git/kb/Ежедневная работа/add

kb/workflow ── Ежедневная работа ── beginner

git add

Команда переносит изменения файлов из рабочего дерева в индекс (staging area). Сама ничего не коммитит - только готовит, что попадёт в следующий коммит.

view as markdownaka: git-add, stage

git add - самая частая команда в Git после git status. Она отвечает за переход «правки на диске» → «правки готовые к коммиту».

Что делает под капотом

Для каждого файла:

  1. Считывает содержимое из рабочего дерева.
  2. Создаёт blob-объект в .git/objects/.
  3. Обновляет запись в .git/index: путь, права, SHA blob'а.

После этого git status покажет файл в разделе «Changes to be committed».

Базовые формы

bash
git add file.txt          # один файл
git add src/              # директория рекурсивно
git add .                 # всё из текущей папки
git add -A                # все изменения по всему репозиторию
git add '*.py'            # по маске

Разница между . и -A: точка добавляет только из текущей рабочей директории, -A смотрит на весь репозиторий вне зависимости от того, где ты находишься.

Интерактивный режим

bash
git add -p file.txt

Разбивает правку на hunk'и (куски ±3 строки контекста) и спрашивает по каждому: y - добавить, n - пропустить, s - разбить на более мелкие, e - отредактировать вручную. Это главный инструмент для разделения одного файла с двумя разными изменениями на два коммита.

Подводные камни

  • git add file.txt пишет в индекс текущее содержимое. Если после add ещё раз отредактировать файл - в индексе останется старая версия. git status покажет файл и в «to be committed», и в «not staged». Чтобы догнать - повторить git add.
  • Новые файлы по умолчанию не отслеживаются. Их видно как untracked, пока их явно не добавить. Регистрация автоматическая отсутствует - это сделано намеренно, чтобы случайные файлы (логи, билд-артефакты) не попадали в индекс.

§ команды

bash
git add file.txt

Добавить один файл в индекс

bash
git add -A

Добавить все изменения по репозиторию: новые, изменённые, удалённые

bash
git add -p

Интерактивно по hunk'ам

bash
git add -u

Только изменённые отслеживаемые файлы (без новых untracked)

§ см. также

  • statusgit statusПоказывает разницу между тремя зонами Git: что изменено в рабочем дереве, что застейджено в индексе, какая ветка активна. Самая безвредная команда - ничего не меняет, можно жать сколько хочешь.
  • commit-cmdgit commitФиксирует то, что лежит в индексе, как новый коммит-объект и передвигает текущую ветку на этот коммит. Без аргументов открывает редактор для сообщения; чаще всего вызывают с `-m`.
  • blobBlobОбъект Git, который хранит содержимое одного файла. Только байты, без имени, прав и даты. Имя файла лежит в `tree`, не в blob.
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки