7 Git-команд, которые делают тебя повелителем кода (но стоит переборщить — и проект можно похоронить!)

vs code с логотипом Git сверху

Каждый разработчик рано или поздно открывает для себя команды Git, работающие почти как секретные читы. С их помощью ты решаешь сложные задачи за минуты — вместо часов возни — и получаешь такой уровень контроля, что поначалу кажется, будто это магия. Для меня эти команды полностью перевернули восприятие Git: что-то сломал — секунду паникуешь — вводишь пару заклинаний — и будто ничего не было.

В этом списке — мои личные фавориты, проверенные в бою: на работе, в пет-проектах и даже в open-source. Изучить их просто, они невероятно мощные и действительно спасают целые дни. Но имей в виду: их сила требует осторожности, иначе они сыграют против тебя.

Дальше — команды, которые действительно дают нечестное преимущество, и ситуации, когда они могут обернуться головной болью:

git add -p: выбирай только лучшие изменения

Когда смотрю чужой git-лог, сразу видно, кто наступал на грабли: коммиты, в которых намешаны разные задачи, забытые строки отладки, случайно залитая «сыромятина». Сам таким был не раз! Именно для этого и создан git add -p: он разбивает изменения на небольшие кусочки (hunks) и спрашивает — этот брать в коммит или нет? Получаешь как будто checkbox прямо в консоли — берёшь нужные правки, а лишнее не добавляешь. Со временем твои коммиты становятся чистыми и аккуратными, и даже спустя месяцы ты или любой коллега легко поймёт, что где происходило в проекте.

git add -p usage

Когда лучше не использовать

Если у тебя огромный автогенерируемый файл или изменения нельзя удобно разбить на части, «интерактив» превращается только в лишний геморрой. В таких случаях иногда проще добавить целый файл целиком одним махом.

git commit —amend: перепиши прошлое, будто ничего не было

Знакомо, правда? Коммитишь — и тут же видишь опечатку, забыл добавить файл или что-то ещё мелкое. Вместо нового фикса просто запускай git commit —amend: добавишь забытые файлы и тут же изменишь описание коммита.

Ощущения как у настоящего хакера времени: в истории останется аккуратный коммит, будто ошибки и не было. Никаких лишних правок, история чистая — пусть код-ревьюеры теперь ищут к чему придраться!

git amend command usage

Когда точно не стоит

Не меняй коммит, если он уже уехал в общий репозиторий и кто-то его затянул. Иначе коллегам придётся расхлёбывать кучу конфликтов и разбирать странные истории веток.

A terminal with the Git logo and some code in the background.

Этот инструмент превращает любой Git-репозиторий в собственный офлайн-GitHub!

Собери pgit один раз — и сможешь везде показывать свой код с подсветкой и навигацией прямо локально.

git reflog: верни из небытия то, что считал потерянным навсегда

Если и есть у Git суперсила, то это reflog — внутренний журнал всех изменений и переключений. Откатился не туда, удалил ветку, ошибся слиянием — reflog хранит всю последовательность действий. Благодаря нему возвращать “утерянные” коммиты — вопрос пары минут.

Первый раз мне это спасло несколько часов работы: снес ветку, а потом понял — там важные правки. Уже думал: “Ну всё, пропало…” — но git reflog подсказал нужный хеш, и всё восстановил. После этого перестал воспринимать Git как источник стресса — любую ошибку теперь можно откатить.

git reflog command usage

Ограничения

Reflog не бесконечен, особенно если репозиторий часто “чистится” или мал по размеру. Это не “спасительный круг” вместо резервных копий — хранить что-то бесконечно сможет только бэкап.

git cherry-pick: вытащи нужный коммит хоть с другой планеты

Cherry-pick — это когда нужно вытащить один-единственный коммит из любой ветки, не таская за собой весь остальной “багаж”. Например: исправил баг “там”, а прилетело задание срочно закрыть этот тикет здесь — берёшь только нужную правку из экспериментальной ветки и не надо “лить” весь сырой код одним махом.

Особенно спасает, если уже знаешь: где-то фиксация бага была, а переносить весь массив изменений опасно. Cherry-pick делай — и готово!

Минусы

Эта команда создаёт новый идентификатор коммита. Если злоупотреблять cherry-pick при работе со старыми ветками, легко получить дубли и запутать историю. Оставь этот трюк для точечных случаев.

A terminal with the Git logo and some code in the background.

4 Git-команды уровня “ниндзя”, о которых ты даже не подозревал

Погрузиcь в скрытые фишки Git — и стань бро для своей команды.

git reset —hard: ядерная перезагрузка проекта

Этой командой многие боятся пользоваться — и не зря: она сносит абсолютно все несохранённые изменения, возвращает ветку к выбранному коммиту и очищает папку до нуля. Но когда эксперименты зашли в тупик и “откатывать” уже нечего — это самый быстрый способ вернуться к чистому рабочему листу.

Когда после серии неудачных попыток папка забита мусором, можно через git add -p сохранить только важное, а потом git reset —hard вычистит всё остальное. Рабочее пространство чистое, и ты снова в игре.

git cherrypick command usage

Серьёзное предупреждение

Никогда не жми “жёсткий сброс”, если в каталоге осталась ценная незакоммиченная работа. Хочешь временно убрать лишнее — пользуйся git stash. “Жёсткий” reset — только, если готов попрощаться с текущими изменениями навсегда.

git clean -fd: вымети весь цифровой мусор за секунду

Рабочая папка зарастает мусором: временные файлы сборки, логи, автоматические бэкапы редакторов. С помощью git clean — всю эту шелуху можно убрать за один приём, оставив только то, что под контролем версий.

Особенно выручает в крупных проектах или когда после серии сборок появилась странная ошибка, но стандартные методы не помогли. После git clean проект вновь выглядит как “чистая” версия, без подтёртых хвостов.

git clean fd command usage

Важно!

Не запускай эту команду в папке с важными нестандартными файлами (например, со своими локальными настройками). Сначала проверь git clean -n: команда покажет, что будет удалено — и только потом подтверждай удаление.

git rerere: пусть Git сам разбирает рутинные конфликты

Впервые услышав про rerere, я подумал — кто-то прикололся… На деле rerere (reuse recorded resolution) — настоящая палочка-выручалочка: Git запоминает, как ты решал конкретный конфликт в прошлом, и при следующей похожей ситуации повторит твоё решение. При длинных ветках или частых rebase’ах это экономит часы и кучу нервов.


Подписывайся на рассылку — в твоих руках будет всё, что скрывает Git!

Вся прелесть — rerere работает почти незаметно: решаешь конфликт, Git его запоминает, и в следующий раз действует за тебя. Ощущается, будто у тебя появился секретный помощник, который всегда рядом. Включается rerere так:

Кому не подойдёт

Если решения конфликтов часто приходится менять или они зависят от ситуации, rerere может повторить старую, уже неактуальную стратегию и только всё усложнить. Как с любым мощным инструментом — проверяй, что он делает.

The Linux mascot wearing a nightcap inside a crescent moon, placed over a blurred background resembling Lazygit’s commit graph colors and surrounded by a stylized branching diagram with circular nodes.

Благодаря этому приложению на Linux я почти забыл про командную строку!

Это реально лучший консольный интерфейс для Git. И смотрится просто круто.

Git учит: история не диктует тебе условия — ты сам решаешь, как она будет выглядеть. Да, “отменить” простое действие можно в любой системе контроля версий, но только Git даёт инструменты для восстановления, перестройки, изучения изменений и даже “прыжков во времени”. Правда, где много свободы — там легко запутаться (мануал Git — это 1514 строк ужаса!). Поэтому не зря Git порой пугает больше, чем падение боевого сервера.

Секрет — вовсе не гонять все эти команды подряд, а знать, КОГДА использовать каждую из них. Именно они и ощущаются настоящими “читами”: спасают в самых сложных ситуациях. Освоив их, ты станешь чувствовать себя не новичком — а хозяином кода.

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка — это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!

Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

Также подписывайтесь на нас в:

Алекс Бежбакин
Оцените автора
Добавить комментарий