How to use git

LLM анализ статьи

1. TL;DR

Автор говорит, что Git становится понятным не через заучивание команд, а через понимание его как «таймлайна» состояний проекта. Главная разница между слабым и уверенным использованием Git — умение видеть текущее состояние, аккуратно формировать коммиты, безопасно переключаться между задачами и восстанавливаться после ошибок.

2. Ключевые мысли

  1. Git — не просто бэкап, а история состояний проекта. Автор противопоставляет примитивный workflow add / commit / push более зрелому пониманию Git как графа коммитов, веток, слияний и точек восстановления.

  2. git status — базовая команда безопасности. Перед коммитом, переключением веток или rebase нужно понимать, что изменено, что уже staged, и нет ли случайных файлов вроде .env, логов или скриншотов.

  3. git diff и git diff --staged защищают от плохих коммитов. Автор подчёркивает, что просмотр изменений перед коммитом помогает поймать секреты, сломанные импорты, console.log и другой мусор до отправки кода.

  4. git add . лучше не использовать вслепую. Вместо добавления всего подряд автор советует git add -p, чтобы собирать коммит по кускам и отделять разные логические изменения друг от друга.

  5. git bisect помогает быстро найти коммит, который сломал систему. Это бинарный поиск по истории: Git проверяет середину диапазона между «хорошим» и «плохим» состоянием, а разработчик отмечает результат, пока не найдётся конкретный виновный коммит.

  6. stash, worktree и ветки позволяют безопасно переключаться между задачами. git stash временно прячет незавершённую работу, ветки дают sandbox для экспериментов, а git worktree позволяет открыть другую ветку в отдельной директории без постоянного stash/switch/pop.

  7. reflog, restore, blame и log дают контроль над историей и восстановлением. git reflog показывает недавние действия Git и помогает вернуть «потерянные» коммиты; git restore откатывает файл; git blame помогает понять происхождение строки; git log --oneline --graph --decorate делает историю визуально читаемой.

  8. Хорошие коммиты и интерактивный rebase делают историю полезной для людей. Автор критикует сообщения вроде fix и предлагает писать осмысленно: что именно изменено и где. git rebase -i используется для squash, переименования и упорядочивания коммитов перед PR.

3. Что здесь действительно важно и почему

Главная полезная мысль — Git нужно воспринимать не как кнопку “сохранить”, а как инструмент управления состояниями и риском. Тогда команды перестают быть случайным набором заклинаний: status показывает текущее состояние, diff показывает отличие, branch/worktree/stash изолируют работу, bisect/blame/log помогают расследовать проблемы, а reflog даёт шанс восстановиться после ошибок.

Практически самое ценное здесь — привычка проверять перед действием: git status, затем git diff, затем точечный git add -p, затем нормальный commit message. Это простая дисциплина, которая сразу уменьшает количество грязных коммитов, случайных файлов и непонятной истории.

Второй важный слой — уверенность в восстановлении. Автор верно подмечает: многие боятся Git, потому что не понимают, как откатиться или найти потерянное. Знание reflog, restore, stash, bisect и понятной истории резко снижает страх перед ошибками.

4. Слабые места, натяжки и спорные моменты

Статья полезная, но довольно популярная и обобщающая. Формула «senior developers do differently» скорее маркетинговая: перечисленные команды действительно важны, но сами по себе не делают разработчика senior.

Есть несколько мест, где нужна осторожность. git restore app.js может уничтожить незакоммиченные изменения в файле, если выполнить его неосознанно. git stash pop не всегда «возвращает всё идеально» — возможны конфликты, особенно после изменений в другой ветке. git checkout <commit-id> после reflog открывает detached HEAD; для нормального восстановления часто лучше создать ветку от найденного коммита. git rebase -i полезен перед PR, но опасен для уже опубликованных/shared веток, если команда не договорилась о workflow.

Также статья почти не говорит о командных правилах: protected branches, pull request review, signed commits, CI, conventional commits, force-push policy, merge vs rebase strategy. То есть она хорошо объясняет личные привычки разработчика, но не покрывает полноценную Git-культуру команды.

5. Ограничение по источнику

Выводы основаны только на предоставленном тексте. Он выглядит как основное содержание статьи, но я не проверял оригинальную страницу Medium, комментарии, иллюстрации и связанные материалы, поэтому оценка ограничена этим фрагментом.