Введение
Узнайте, что означает «сохранение» в Git, каковы его основные принципы и какие команды используются при сохранении изменений.
В повседневной речи вы «сохраняете» документ, но в Git аналогичное действие называется коммитом. Коммит записывает постоянный снимок подготовленных файлов и их изменений в историю репозитория. В отличие от нажатия Сохранить в редакторе, коммит не перезаписывает предыдущую версию — он добавляет новую запись в хронологию, к которой можно вернуться, сравнить её или отменить в любой момент.
Эта страница представляет собой карту команд, которые используются для сохранения изменений локально и подготовки их к передаче. Каждый раздел ведёт к отдельной главе с полным описанием параметров и примерами.

Три области, через которые проходят изменения
Чтобы понять процесс сохранения в Git, полезно знать, что файл может находиться сразу в трёх местах:
- Рабочий каталог — файлы, которые вы редактируете на диске.
- Область подготовки (также называемая индексом) — промежуточная зона, где вы собираете именно то, что войдёт в следующий коммит.
- Репозиторий — зафиксированная история, хранящаяся в скрытой папке
.git.
Сохранение изменений означает их перемещение из рабочего каталога через область подготовки в репозиторий:
edit files # changes live in the working directory
git add <file> # move them into the staging area
git commit # record them permanently in the repositoryДвухэтапный процесс — add, затем commit — сделан намеренно: он позволяет зафиксировать только часть работы, оставив остальное на потом, создавая сфокусированные и осмысленные коммиты.
git add
Команда git add перемещает изменения из рабочего каталога в область подготовки. Она указывает Git, какие обновления включить в следующий коммит. Сама по себе git add не записывает ничего постоянного — за ней необходимо выполнить git commit.
git add index.html # stage a single file
git add src/ # stage everything under a directory
git add . # stage all changes in the current directory treeЗапустите git status в любой момент, чтобы увидеть, какие файлы подготовлены, изменены или не отслеживаются.
git commit
Команда git commit записывает все текущие подготовленные изменения в виде нового снимка в репозиторий. Каждый коммит является постоянной точкой в истории, к которой можно вернуться. Поскольку фиксируются только подготовленные изменения, сначала необходимо выполнить git add.
git commit -m "Add contact form validation"Используйте короткое описательное сообщение в повелительном наклонении («Add», «Fix», «Update»). Если опустить -m, Git откроет настроенный редактор, чтобы вы могли написать более подробное сообщение.
git diff
Команда git diff сравнивает различные состояния вашего проекта, позволяя точно увидеть, что именно вы собираетесь сохранить. По умолчанию git diff показывает неподготовленные изменения — разницу между рабочим каталогом и областью подготовки. Добавьте --staged, чтобы увидеть, что уже подготовлено и готово к коммиту.
git diff # working directory vs. staging area (not yet staged)
git diff --staged # staging area vs. last commit (about to be committed)Просмотр diff перед коммитом — лучший способ избежать сохранения отладочного кода или случайных правок.
git stash
Команда git stash временно откладывает незафиксированные изменения, чтобы рабочий каталог стал чистым — это удобно, когда нужно переключиться на другую задачу или получить обновления, не фиксируя незавершённую работу. Изменения сохраняются в стеке, из которого их можно извлечь позже.
git stash # set aside current changes and revert to a clean tree
git stash pop # re-apply the most recent stash and remove it from the stack.gitignore
Некоторые файлы никогда не должны попадать в коммит — результаты сборки, зависимости, секреты или метаданные операционной системы. Git читает файл .gitignore, чтобы определить, какие пути следует пропустить. Команды git ignore не существует; вы создаёте и фиксируете этот файл самостоятельно, перечисляя шаблоны, которые Git должен исключить из отслеживания:
# Dependencies
node_modules/
# OS files
.DS_Store
Thumbs.db
# Secrets
.env
Обратите внимание, что .gitignore влияет только на файлы, которые Git ещё не отслеживает. Чтобы прекратить отслеживание файла, который был зафиксирован до добавления его в ignore-список, используйте git rm --cached.
Типичный рабочий процесс
Стандартная последовательность для сохранения и передачи изменений выглядит следующим образом:
git status # see what changed
git add . # stage the changes
git diff --staged # review what is about to be committed
git commit -m "Implement feature" # save a permanent snapshot
git push origin main # upload commits to the remoteПервые четыре шага сохраняют вашу работу локально; git push — это то, что передаёт её на удалённый сервер, например GitHub.
Отмена изменений до сохранения
Если вы по ошибке подготовили что-то лишнее, вы можете вернуть это из области подготовки, не потеряв правки:
git restore --staged <file> # unstage, keep the changes in the working directory
git restore <file> # discard working-directory changes (cannot be undone)Другие способы отменить изменения после коммита см. в разделе git reset.