Самопроверка изменений и дисциплина коммитов
Git сопровождал SafeSort с первой строчки кода. Теперь соберём привычку проверять изменения перед каждым коммитом.
Git сопровождал SafeSort с самого начала: каждый чекпойнт в Части IV (страницы с 23-08 по 23-22) отмечал коммит и Pull Request, сохранявший очередную функцию в истории. Здесь мы не открываем Git впервые. Мы формализуем дисциплину самопроверки перед коммитом, прежде чем в следующем разделе код пройдёт полный цикл Issue → ветка → Pull Request на GitHub. Между «файл изменён на диске» и «изменение сохранено в истории» есть два промежуточных шага, и понимание разницы между ними экономит немало недоумения в будущем.
git status
git diff
git add src/safesort/duplicates.py tests/test_duplicates.py
git commit -m "feat: add duplicate-file detection"
git status перечисляет изменённые файлы, но не показывает содержимое изменений. git diff показывает построчно, что именно добавлено и что удалено. Читайте его перед каждым коммитом, чтобы случайно не закоммитить что-то лишнее: отладочный print(), забытый файл с личными данными, временный код.Логические коммиты
Один коммит должен описывать одно законченное, осмысленное изменение, а не «конец рабочего дня» или случайный набор всего, что накопилось. Сравните:
| Хорошо | Плохо |
|---|---|
| feat: add directory scanner | update |
| feat: add dry-run sort planning | fix |
| test: cover undo conflicts | stuff |
| docs: document safesort.toml options | final-final |
git add . добавляет в индекс все изменения в текущем каталоге разом. Это удобно, когда коммит действительно должен включать всё, но легко случайно затянуть в коммит что-то не относящееся к делу. git add путь/к/файлу добавляет только нужные файлы и делает коммиты более осмысленными.