PurpleSchool — курсы программирования онлайн
  • Пути
    • Frontend React разработчик
    • Frontend Vue разработчик
    • Backend разработчик Node.js
    • Fullstack разработчик React / Node.js
    • Mobile разработчик React Native
    • Backend разработчик Golang
    • Devops инженер
    • Backend разработчик Python
  • AI для кодаНовое
  • О нас
    • Отзывы
    • Реферальная программа
    • О компании
    • Контакты
  • Иконка открытия меню
    • Сообщество
    • PurpleПлюс
    • AI Собеседование
    • AI тренажёр
    • Проекты
PurpleSchool — платформа бесплатных roadmap и курсов для разработчиков
ютуб иконка
Telegram иконка
VK иконка
VK иконка
Курсы
ГлавнаяКаталог курсовFrontendBackendFullstack
Практика
КарьераПроектыPurpleПлюс
Материалы
БлогБаза знаний
Документы
Договор офертаПолитика конфиденциальностиПроверка сертификатаМиграция курсовРеферальная программа
Реквизиты
ИП Ларичев Антон АндреевичИНН 773373765379contact@purpleschool.ru

PurpleSchool © 2020 -2026 Все права защищены

  • Курсы
    • FrontendИконка стрелки
    • AI разработкаИконка стрелки
    • BackendИконка стрелки
    • DevOpsИконка стрелки
    • MobileИконка стрелки
    • ТестированиеИконка стрелки
    • Soft-skillsИконка стрелки
    • ДизайнИконка стрелки
    Иконка слояПерейти в каталог курсов
  • Бесплатно
    • Курсы
    • JavaScript Основы разработкиPython Основы PythonCSS CSS FlexboxКарта развитияВопросы для собеседований
    • База знанийИконка стрелки
    • Новостные рассылкиИконка стрелки
  • PurpleSchool — курсы программирования онлайн
    • AI для кодаНовое
    • Сообщество
    • PurpleПлюс
    • AI Собеседование
    • AI тренажёр
    • Проекты
    Главная
    Сообщество
    Git для разработчика: команды на каждый день для работы с кодом

    Git для разработчика: команды на каждый день для работы с кодом

    Аватар автора Git для разработчика: команды на каждый день для работы с кодом

    Антон Ларичев

    Иконка календаря12 мая 2026
    GitВерсионированиеDevOpsИнструменты разработчикаjuniorИконка уровня junior
    Картинка поста Git для разработчика: команды на каждый день для работы с кодом

    Введение

    Git — это инструмент, без которого современная разработка невозможна. Каждый день вы коммитите изменения, переключаетесь между ветками, разрешаете конфликты и синхронизируете код с командой. Но многие разработчики используют лишь малую часть возможностей Git, ограничиваясь add, commit и push.

    В этой статье разберём команды, которые реально пригодятся в ежедневной работе. Не теорию из документации, а практические сценарии: как откатить случайный коммит, временно отложить изменения, найти автора бага и красиво оформить историю перед merge.

    Базовые команды для повседневной работы

    Начнём с того, что вы уже знаете, но добавим полезные флаги.

    # Посмотреть состояние рабочей директории
    git status -s
    
    # Добавить все изменения, включая удалённые файлы
    git add -A
    
    # Коммит с сообщением одной командой
    git commit -m "feat: добавить авторизацию через OAuth"
    
    # Изменить последний коммит (если ещё не запушен)
    git commit --amend --no-edit
    

    Флаг -s для status показывает компактный вывод: M — изменён, A — добавлен, ?? — не отслеживается. Это удобнее громоздкого стандартного вывода.

    --amend --no-edit пригодится, если забыли добавить файл в последний коммит — добавьте его через git add и выполните команду без изменения сообщения.

    Работа с ветками

    Ветки — основа командной разработки. Вот команды, которые должны быть на автомате.

    # Создать ветку и сразу переключиться
    git switch -c feature/user-profile
    
    # Переключиться на существующую ветку
    git switch main
    
    # Удалить локальную ветку
    git branch -d feature/old-stuff
    
    # Принудительно удалить (даже если не смержена)
    git branch -D feature/experiment
    
    # Посмотреть все ветки, включая удалённые
    git branch -a
    

    Команда switch появилась как замена устаревшему checkout для работы с ветками. Используйте её — это безопаснее, потому что checkout делает слишком много разных вещей.

    Stash: временное хранилище изменений

    Классическая ситуация: работаете над фичей, прилетает срочный баг. Коммитить полуготовый код не хочется — на помощь приходит stash.

    # Спрятать текущие изменения
    git stash push -m "работа над формой регистрации"
    
    # Посмотреть список спрятанных изменений
    git stash list
    
    # Применить последний stash и удалить из списка
    git stash pop
    
    # Применить, но оставить в списке
    git stash apply stash@{0}
    
    # Удалить конкретный stash
    git stash drop stash@{1}
    

    Совет: всегда давайте описание через -m, иначе через неделю не вспомните, что там лежит.

    Откат изменений

    Наверное, самая страшная для новичков часть Git. На самом деле всё просто.

    # Отменить изменения в файле (до git add)
    git restore src/app.ts
    
    # Убрать файл из индекса (после git add)
    git restore --staged src/app.ts
    
    # Откатить последний коммит, оставив изменения в рабочей директории
    git reset --soft HEAD~1
    
    # Откатить коммит и убрать изменения из индекса
    git reset --mixed HEAD~1
    
    # Полностью удалить последний коммит со всеми изменениями
    git reset --hard HEAD~1
    
    # Создать новый коммит, отменяющий указанный
    git revert abc1234
    

    Разница между reset и revert принципиальна. reset переписывает историю — нельзя использовать на запушенных коммитах. revert создаёт новый коммит с обратными изменениями — безопасно для общих веток.

    Синхронизация с удалённым репозиторием

    # Получить изменения с сервера, но не применять
    git fetch origin
    
    # Получить и слить с текущей веткой
    git pull --rebase origin main
    
    # Запушить ветку с установкой upstream
    git push -u origin feature/new-api
    
    # Принудительный push с защитой от перезаписи чужих коммитов
    git push --force-with-lease
    

    Флаг --rebase для pull избавляет от мусорных merge-коммитов в истории. А --force-with-lease вместо обычного --force проверит, не появились ли новые коммиты в удалённой ветке — спасёт от случайной перезаписи работы коллеги.

    Rebase и интерактивная история

    Rebase позволяет переписать историю коммитов перед merge в основную ветку.

    # Перенести коммиты текущей ветки поверх main
    git rebase main
    
    # Интерактивный rebase последних 3 коммитов
    git rebase -i HEAD~3
    

    В интерактивном режиме можно объединять коммиты (squash), менять сообщения (reword), удалять (drop) и менять порядок. Это must-have перед открытием pull request — превращает кашу из мелких коммитов в чистую историю.

    Поиск и анализ

    # Кто и когда менял каждую строку файла
    git blame src/utils.ts
    
    # Найти коммит, в котором появилась строка
    git log -S "calculateTotal" --source --all
    
    # Бинарный поиск коммита, сломавшего код
    git bisect start
    git bisect bad HEAD
    git bisect good v1.2.0
    

    git bisect — недооценённая команда. Когда не знаете, какой коммит сломал тесты, она автоматически делает бинарный поиск по истории.

    Cherry-pick

    Перенос конкретного коммита из одной ветки в другую.

    # Применить коммит на текущую ветку
    git cherry-pick abc1234
    
    # Применить несколько коммитов
    git cherry-pick abc1234 def5678
    

    Полезно, когда нужно срочно перенести фикс из develop в release-ветку, не сливая остальные изменения.

    Частые ошибки

    Использование git push --force на общих ветках. Это перезатрёт работу коллег. Всегда применяйте --force-with-lease и только на своих feature-ветках.

    Коммит больших файлов и секретов. Удалить их из истории сложно — потребуется git filter-repo и форс-пуш. Настройте .gitignore сразу и используйте инструменты вроде git-secrets.

    Бесконечные merge-коммиты в истории. Если каждый pull создаёт коммит вида «Merge branch main» — настройте git config --global pull.rebase true.

    Работа в ветке main напрямую. Даже на пет-проектах заведите привычку создавать feature-ветки. Это упростит откат и code review.

    Игнорирование .gitignore. Перед первым коммитом в новом проекте всегда проверяйте, что node_modules, .env и build-артефакты исключены.

    Заключение

    Git — это не магия, а набор простых инструментов, которые становятся естественным продолжением рабочего процесса. Команды из этой статьи покрывают 95% задач, с которыми сталкивается разработчик ежедневно.

    Главный совет: не бойтесь экспериментировать в учебном репозитории. Сломать что-то локально невозможно — даже после reset --hard коммиты остаются в git reflog ещё 30 дней. Освойте rebase -i, stash и cherry-pick — и ваша продуктивность вырастет в разы, а pull request'ы станут чище и понятнее для ревьюеров.

    Иконка глаза446

    Комментарии

    0

    Постройте личный план изучения JavaScript Advanced - продвинутые концепции языка и ООП до уровня Middle — бесплатно!

    JavaScript Advanced - продвинутые концепции языка и ООП — часть карты развития Frontend, Backend, Mobile

    • step100+ шагов развития
    • lessons30 бесплатных лекций
    • lessons300 бонусных рублей на счет

    Бесплатные лекции

    Лучшие курсы по теме

    изображение курса

    TypeScript с нуля

    Антон Ларичев
    AI-тренажерыAI-тренажеры
    Практика в студииПрактика в студии
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.8
    3 999 ₽ 6 990 ₽
    Подробнее
    изображение курса

    React и Redux Toolkit

    Антон Ларичев
    AI-тренажерыAI-тренажеры
    Практика в студииПрактика в студии
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.8
    3 999 ₽ 6 990 ₽
    Подробнее
    изображение курса

    Neovim

    Антон Ларичев
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.8
    3 999 ₽ 6 990 ₽
    Подробнее

    Похожие статьи

    Картинка поста CI/CD с GitHub Actions: автоматизация деплоя для начинающих
    Иконка аватараАнтон
    Иконка календаря03 июля 2026
    CI/CDGitHub ActionsDevOps+ 2juniorИконка уровня junior

    CI/CD с GitHub Actions: автоматизация деплоя для начинающих

    CI/CD с GitHub Actions: пошаговая настройка pipeline для автоматического тестирования и деплоя Node.js-приложений без сторонних сервисов.

    Иконка чипа0
    Иконка глаза570
    Иконка комментариев0
    Картинка поста Регулярные выражения в JavaScript: полное руководство
    Иконка аватараАнтон
    Иконка календаря06 августа 2026
    JavaScriptрегулярные выраженияregexp+ 2middleИконка уровня middle

    Регулярные выражения в JavaScript: полное руководство

    Регулярные выражения в JavaScript позволяют искать, проверять и заменять текст по шаблону. Разбираем синтаксис, методы и частые ошибки с примерами.

    Иконка чипа0
    Иконка глаза137
    Иконка комментариев0
    Картинка поста React useState и useEffect: полное руководство 2024
    Иконка аватараАнтон
    Иконка календаря29 июля 2026
    ReactuseStateuseEffect+ 3juniorИконка уровня junior

    React useState и useEffect: полное руководство 2024

    Разбираем useState и useEffect с нуля: как управлять состоянием и побочными эффектами в React-компонентах с реальными примерами.

    Иконка чипа0
    Иконка глаза712
    Иконка комментариев0
    Иконка чипа0