Большинство DS знают базовые команды. Но несколько паттернов реально меняют качество работы с кодом.
🔀 merge vs rebase — в чём разница
Когда нужно влить изменения из main в свою ветку:
git pull origin main --no-rebase # merge: создаёт merge commit
git pull origin main --rebase # rebase: кладёт ваши коммиты поверх main
Rebase даёт чистую линейную историю — но осторожно если ветку используют другие.
↩️ revert vs reset — когда что
git revert <commit-hash> # создаёт новый коммит который отменяет изменения
git reset <commit-hash> # удаляет коммиты из истории (деструктивно)
Для командной работы —
revert. reset только если история ещё не запушена.📋 Что всегда должно быть в .gitignore
data/ # датасеты — не версионировать в git
.env # ключи и credentials
venv/
.vscode/
__pycache__/
*.pyc
Для версионирования данных — DVC поверх Git.
✅ pre-commit — форматирование до коммита
# .pre-commit-config.yaml
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
hooks:
- id: ruff
- repo: https://github.com/psf/black
hooks:
- id: black
Ruff + Black запускаются автоматически перед каждым коммитом. Ревьюер фокусируется на логике, не на форматировании.
Правила которые реально помогают
· Маленькие коммиты с одной целью — легче ревертить и ревьюить
· Описательные названия веток:
encode-categorical-columns вместо fix· Никаких данных и секретов в репо
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека дата-сайентиста
#буст