Как работает Git через командную строку (CLI)?

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

Ответ

Git CLI (Command Line Interface) — это основной и самый мощный способ взаимодействия с системой контроля версий Git. Он предоставляет полный контроль над репозиторием через набор команд.

Базовый рабочий цикл и команды:

  1. Инициализация и клонирование:

    # Создать новый локальный репозиторий в текущей директории
    git init
    
    # Склонировать удаленный репозиторий
    git clone <url-репозитория>
    # Пример:
    git clone https://github.com/user/project.git
  2. Отслеживание изменений и коммиты:

    # Показать статус файлов (измененные, новые, неотслеживаемые)
    git status
    
    # Добавить конкретный файл в индекс (staging area)
    git add <имя_файла>
    # Добавить все измененные и новые файлы в индекс
    git add .
    # Добавить все файлы, включая удаленные
    git add -A
    
    # Закоммитить проиндексированные изменения с сообщением
    git commit -m "Краткое и информативное описание изменений"
    # Пример:
    git commit -m "FIX: исправлена обработка null в функции calculateTotal"
  3. Работа с ветками (branches):

    # Показать список локальных веток (текущая помечена *)
    git branch
    # Показать все ветки (локальные и удаленные)
    git branch -a
    
    # Создать новую ветку
    git branch <имя_новой_ветки>
    # Создать и сразу переключиться на новую ветку
    git checkout -b <имя_новой_ветки>
    # В современных версиях Git можно использовать:
    git switch -c <имя_новой_ветки>
    
    # Переключиться на существующую ветку
    git checkout <имя_ветки>
    # или
    git switch <имя_ветки>
    
    # Удалить локальную ветку (только если она слита)
    git branch -d <имя_ветки>
    # Принудительное удаление ветки
    git branch -D <имя_ветки>
  4. Синхронизация с удаленным репозиторием (remote):

    # Показать список удаленных репозиториев (обычно 'origin')
    git remote -v
    
    # Загрузить изменения с удаленного репозитория и слить с текущей веткой
    git pull
    # Более безопасный вариант: сначала fetch, потом merge/rebase
    git fetch origin          # Скачать изменения, но не сливать
    git merge origin/main    # Вручную слить изменения
    
    # Отправить локальные коммиты в удаленный репозиторий
    git push
    # При первом push в ветку нужно указать upstream
    git push -u origin <имя_ветки>
  5. Слияние изменений (merge) и перебазирование (rebase):

    # Слить указанную ветку в текущую (создает merge-коммит)
    git merge <имя_ветки_для_слияния>
    
    # Перебазировать текущую ветку на указанную (линейная история)
    git rebase <базовая_ветка>
    # Продолжить rebase после разрешения конфликтов
    git rebase --continue
    # Отменить rebase в случае проблем
    git rebase --abort

Ключевые особенности работы Git через CLI:

  • Локальность: Почти все операции (коммиты, просмотр истории, создание веток) выполняются локально, без доступа к сети.
  • Три состояния файлов: Рабочая копия (working directory), индекс (staging area), репозиторий (.git directory).
  • Нелинейная история: Ветвление и слияние — это "первоклассные" операции.
  • Целостность данных: Все объекты в Git идентифицируются SHA-1 хэшем, что гарантирует неизменность истории.
  • Разрешение конфликтов: При слиянии или перебазировании конфликтующие изменения должны быть разрешены вручную путем редактирования файлов, их добавления (git add) и завершения операции (git commit или git rebase --continue).