Какие основные команды Git вы используете?

«Какие основные команды Git вы используете?» — вопрос из категории Инструменты тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основные команды Git для ежедневной работы:

Начало работы и базовые операции:

  • git init — инициализирует новый репозиторий.
  • git clone <url> — клонирует удаленный репозиторий.
  • git add <file> или git add . — добавляет изменения в индекс (staging area).
  • git commit -m "сообщение" — фиксирует изменения из индекса в репозиторий.
  • git status — показывает состояние рабочей директории и индекса.

Ветвление и слияние:

  • git branch — показывает список веток.
  • git checkout -b <branch_name> — создает новую ветку и переключается на нее.
  • git checkout <branch_name> — переключается на существующую ветку.
  • git merge <branch_name> — сливает указанную ветку в текущую.
  • git rebase <branch_name> — перебазирует текущую ветку на указанную (изменяет историю).

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

  • git push origin <branch_name> — отправляет локальные коммиты в удаленную ветку.
  • git pull origin <branch_name> — забирает изменения из удаленной ветки и сливает с текущей ( = git fetch + git merge).
  • git fetch origin — забирает изменения из удаленного репозитория, но не сливает их.

Просмотр истории и отмена изменений:

  • git log --oneline --graph — компактный вывод истории с визуализацией ветвления.
  • git diff — показывает неиндексированные изменения.
  • git diff --staged — показывает изменения, добавленные в индекс.
  • git restore <file> — отменяет изменения в файле (до индексации).
  • git reset --soft HEAD~1 — отменяет последний коммит, оставляя изменения проиндексированными.

Типовой рабочий процесс:

# Клонирование репозитория
git clone https://github.com/example/project.git
cd project

# Создание ветки для новой функциональности
git checkout -b feature/new-login

# Внесение изменений, добавление и коммит
git add .
git commit -m "Add new login form"

# Отправка ветки на сервер
git push origin feature/new-login
# Далее создается Pull Request (Merge Request) в интерфейсе GitHub/GitLab