← Назад к вопросам

Какие знаешь команды в Git?

1.6 Junior🔥 112 комментариев
#Git

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Основные команды Git для автоматизации и ручного управления

Как QA Automation инженер, я ежедневно использую Git для управления кодом тестов, фиксации изменений и совместной работы. Вот ключевые команды, сгруппированные по назначению:

Базовые операции с репозиторием

  • git init — инициализация нового репозитория в текущей директории.
  • git clone <url> — клонирование удаленного репозитория на локальную машину. Для автоматизации часто клонируем репозитории с тестами на агенты CI/CD.
    git clone https://github.com/company/qa-automation-suite.git
    
  • git status — проверка состояния файлов: измененные, новые, неотслеживаемые.

Работа с изменениями (коммиты)

  • git add <file> или git add . — добавление файлов в staging area (индекс). Перед коммитом обязательно добавляем изменения.
    git add pom.xml src/test/java/tests/LoginTest.java
    
  • git commit -m "сообщение" — создание коммита с описанием изменений. В автотестах пишу осмысленные сообщения: "Add retry logic for flaky API test".
  • git commit --amend — изменение последнего коммита (если забыли что-то добавить или исправить сообщение).

Ветвление (Branching) — критически важно в автотестах

  • git branch — список локальных веток.
  • git branch <name> — создание новой ветки (например, для фичи или баг-фикса).
  • git checkout <branch> или git switch <branch> — переключение на другую ветку.
    git checkout develop
    git switch feature/add-parallel-execution
    
  • git checkout -b <new-branch> — создание и переключение на новую ветку одной командой.
  • git merge <branch> — слияние указанной ветки в текущую. Используется, когда доработали тесты в feature-ветке и вливаем их в main/develop.
  • git rebase <branch> — перебазирование текущей ветки на указанную (линейная история). Использую аккуратно, чтобы не сломать историю в общих ветках.

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

  • git remote -v — просмотр удаленных репозиториев (чаще всего origin).
  • git fetch — загрузка изменений с удаленного репозитория без слияния.
  • git pullgit fetch + git merge (получение и слияние изменений). В CI-скриптах всегда делаем git pull перед запуском тестов.
    git pull origin main --rebase  # частый вариант с rebase вместо merge
    
  • git push — отправка локальных коммитов в удаленный репозиторий. Для новой ветки: git push -u origin <branch-name>.

Анализ истории и изменений

  • git log — просмотр истории коммитов. С опциями --oneline --graph для краткости.
    git log --oneline -10  # последние 10 коммитов
    
  • git diff — сравнение изменений. Без аргументов — между рабочим каталогом и индексом.
  • git diff --staged — сравнение индекса и последнего коммита.
  • git blame <file> — кто и когда менял каждую строку файла. Полезно для анализа тестов.

Отмена изменений и восстановление

  • git restore <file> — отмена изменений в рабочем каталоге (новое).
  • git restore --staged <file> — удаление файла из индекса (staging).
  • git reset <commit> — сброс указателя ветки на конкретный коммит (мягкий --soft, жесткий --hard). Осторожно с --hard!
  • git revert <commit> — создание нового коммита, отменяющего изменения указанного коммита. Безопаснее для общей истории.

Специфичные для автоматизации сценарии

  • git stash — временное сохранение незакоммиченных изменений. Например, если срочно нужно переключиться на другую ветку для hotfix, а тесты недописаны.
    git stash push -m "WIP: page object update"
    git stash list
    git stash pop  # вернуть изменения
    
  • git cherry-pick <commit-hash> — применение конкретного коммита из другой ветки. Если нужно перенести фикс теста в несколько веток.
  • git tag — работа с тегами (версиями). Для помечать стабильные состояния автотестов.
    git tag -a v1.2.0-tests -m "Stable test suite for release 1.2.0"
    git push origin --tags
    

В контексте CI/CD (Jenkins, GitLab CI, GitHub Actions) часто используются комбинации: клонирование, очистка (git clean -fd), переключение на конкретную ветку или тег, мердж/ребейз перед запуском тестов. Для автоматизации также критически важны стратегии ветвления (GitFlow, GitHub Flow), которые определяют, как мы используем эти команды в процессе разработки и тестирования.