Первые шаги: init, add, commit
Теория без практики — ничто. Пройдём весь цикл от пустой папки до первого коммита.
git init — создаём репозиторий
mkdir my-project
cd my-project
git initGit создаёт скрытую папку .git — это и есть репозиторий. Все снимки, история, ветки — хранятся там. Не удаляй её руками.
Initialized empty Git repository in /my-project/.git/
git status — что происходит?
Первая команда, которую ты будешь запускать постоянно:
git statusОна показывает три группы файлов:
- Untracked — Git о них не знает, новые файлы
- Modified — Git знает, файл изменился
- Staged — готовы к коммиту
On branch main
Untracked files:
index.js
style.css
README.md
nothing added to commit but untracked files present
git add — выбираем что войдёт в снимок
git add index.js # добавить один файл
git add index.js style.css # несколько файлов
git add . # всё в текущей папке
git add src/ # целая папкаПосле git add запусти git status снова — увидишь файлы в секции Changes to be committed.
Потренируйся в визуализаторе
Кликай на файлы, добавляй в staging по одному или все сразу, пиши сообщение и коммить:
git commit — фиксируем снимок
git commit -m "feat: добавил главную страницу"Флаг -m — это message, сообщение коммита. Пиши его в настоящем времени, коротко и по делу.
Хорошие сообщения:
feat: добавил авторизацию через email
fix: исправил падение при пустом input
refactor: вынес логику валидации в utils
docs: обновил README
Плохие:
изменения
fix
asdfasdf
работает
Коммит-сообщение — это письмо себе из прошлого. Через месяц ты скажешь спасибо.
git log — смотрим историю
git logcommit a3f7c21 (HEAD -> main)
Author: Ivan Ivanov <ivan@example.com>
Date: Sat Apr 5 12:00:00 2026
feat: добавил главную страницу
commit 8b2d4e9
Date: Sat Apr 5 11:45:00 2026
init: первый коммит
Компактный вариант:
git log --onelinea3f7c21 feat: добавил главную страницу
8b2d4e9 init: первый коммит
Типичная ошибка джунов
Забыть про staging и удивляться, почему git commit ничего не фиксирует:
# Неверно — изменения не в staging:
echo "hello" > index.js
git commit -m "добавил hello" # → nothing to commit
# Верно:
echo "hello" > index.js
git add index.js
git commit -m "добавил hello" # ✓Всегда: git status → git add → git commit. Этот цикл в голове навсегда.