Какая твоя любимая команда Git?

«Какая твоя любимая команда Git?» — вопрос из категории DevOps, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

git rebase -i (интерактивный rebase). Это мощнейший инструмент для поддержания чистой и логичной истории коммитов перед тем, как влить свою работу в общую ветку (например, main или develop).

Зачем это нужно? В процессе активной разработки в feature-ветке часто накапливаются коммиты типа "исправление опечатки", "wip" или "добавил забытый файл". git rebase -i позволяет "причесать" эту историю.

Типичный сценарий использования:

# Находясь в своей feature-ветке, перебазируем ее на актуальную main
# и редактируем последние 4 коммита.
git fetch origin
git rebase -i origin/main~4

В открывшемся редакторе можно:

  1. Объединить коммиты (squash или fixup): Слить несколько мелких коммитов в один осмысленный.
  2. Переписать сообщения (reword): Исправить опечатки или сделать сообщения более информативными.
  3. Изменить порядок (pick и перемещение строк): Выстроить коммиты в логической последовательности.
  4. Редактировать код в старом коммите (edit): Исправить забытую ошибку прямо в истории.

Пример итоговой истории ДО и ПОСЛЕ:

# ДО rebase -i:
* add user controller (HEAD)
* fix typo in route
* implement user service
* wip: user model
* merge main into feature

# ПОСЛЕ rebase -i (squash, reword):
* feat: implement user domain model and service (HEAD)
* feat: add user REST controller with CRUD operations

Важное правило: Интерактивный rebase следует применять только к коммитам, которые еще не были отправлены в общий удаленный репозиторий (или в ветку, где вы работаете в одиночку). Для уже опубликованной истории используйте git merge или git revert, чтобы не создавать проблем коллегам.