🔥 Важное для QA-специалистов! 🔥
В QaRocks ты найдешь туториалы, задачи и полезные книги, которых нет в открытом доступе. Уже более 15.000 подписчиков – будь среди нас! Заходи к нам в телеграм канал QaRocks
С помощью системы контроля версий, Git, тестировщики могут точно определить момент появления ошибки и понять, почему были внесены те или иные правки. Таким образом ускоряются коммуникации между тестировщиками и разработчиками. Кроме того, при необходимости легко откатиться к более ранней версии кода.
Одной из важнейших особенностей Git для QA команд является работа с ветками. Можно создавать ветки для различных типов тестов — например, для регрессионного или нагрузочного — основная версия кода при этом не затрагивается. Это позволяет инженерам по автоматизации QA запускать тесты изолированно, исправлять проблемы в отдельной ветке, а затем объединять всё в основную ветку после успешного выполнения тестов. Благодаря этому процесс тестирования становится прозрачным и понятным, структурированным и хорошо организованным.
Содержание:
Основные команды Git

git init — инициализация репозитория
- Эта команда создаёт новый репозиторий Git в каталоге вашего проекта. Создается папка .git, которую Git использует для отслеживания изменений.
git init

git clone — клонирование репозитория
- Используется для копирования существующего репозитория на вашу локальную машину. Эта команда загружает все файлы и коммиты из удаленного хранилища.
git clone <repository-url>

git add — добавление изменений
- Эта команда добавляет все файлы рабочего каталога в индекс для коммита. Можно добавить определённые файлы или директории или использовать команду
git add .для добавления всех файлов. git add test.e2e.js
Git добавляет определенный файл.

Git добавляет все файлы.

git branch — управление ветками
- Команда позволяет отобразить все ветки, а также создать, удалить и переименовать отдельную ветку в репозитории.
git branch <branch-name># Создаёт новую ветку gitbranch -d <branch-name># Удаляет ветку

git commit — фиксация изменений
- Команда git commit сохраняет изменения в репозитории с обязательным описанием нововведений.
git commit -m “Commit message”

git push — перенос изменений в удаленный репозиторий
- Команда git push позволяет синхронизировать локальную ветку с аналогичной в удаленном репозитории. Если ветки в удаленном репозитории нет, то она создаётся.
git push origin <branch-name>

git pull — получение и слияние обновлений с удаленного репозитория
- Получает и вносит изменения из удаленного репозитория в текущую ветку.
git pull origin <branch-name>

git status — проверка текущего состояния
- Показывает состояние рабочего каталога и индекса. Показывает, какие изменения были поставлены, а какие ожидают коммита.
git status

git merge — слияние веток
- Объединяет изменения из указанной ветки в текущую.
git merge <branch-name>

Продвинутые команды Git
- git stash – временно сохраняет изменения
- Сохраняет временно изменения, не фиксируя их. Это полезно, когда вам нужно переключить ветку, не потеряв текущие изменения.
git stashgit stash pop# Чтобы получить изменения
- git rebase — поддерживаете историю коммитов в чистоте
- Команда git rebase позволяет интегрировать изменения из одной ветки в другую, сохраняя при этом линейную историю проекта без merge- коммитов.
git rebase <branch-name>
- git cherry-pick — применение отдельных коммитов
- Эта команда позволяет перенести отдельные коммиты из одной ветки к другой.
git cherry-pick <commit-hash>
- git reset — отмена изменений
- Позволяет отменить изменения в отдельной директории или репозитории. Используйте
git reset -soft, чтобы сохранить изменения, илиgit reset -hard, чтобы полностью откатить их. git reset –hard <commit-hash>
- git reflog — просмотр всех действий
- git reflog отображает все действия, совершённые в репозитории, включая те, которые не видны через обычный
git log. git reflog
- git bisect — определение коммита, в котором появилась ошибка
- Находит коммит, в котором была обнаружена ошибка, с помощью бинарного поиска по истории коммитов.
git bisect startgit bisect good <last-known-good-commit>git bisect bad <bad-commit>
- git clean — удаление неотслеживаемых файлов
- Со временем в вашем проекте могут накапливаться неотслеживаемые файлы или директории. Чтобы удалить их, используйте:
git clean -f- Чтобы удалить неотслеживаемые директории, добавив флаг -d:
git clean -fd
- git filter-branch — перезапись истории коммитов
- Если каким-то образом в репозиторий попала конфиденциальная информация, то можно использовать
git filter-branch, чтобы удалить её или изменить во всей истории: git filter-branch –tree-filter ‘rm -f sensitive-file.txt’ HEAD
- git blame — отслеживание изменений по автору
- Позволяет узнать, кто последним изменил определенную строку в файле.
git blame filename
- git worktree — работа с несколькими рабочими директориями
- Если нужно работать над несколькими ветками одновременно, то можно использовать
git worktreeдля создания дополнительной рабочей директории: git worktree add ../branch-dir feature-branch
- git submodule — работа с вложенными репозиториями
- С помощью подмодуля репозитория можно добавить один Git-репозиторий как подкаталог другого. Это у, когда ваш проект зависит от других репозиториев.
git submodule add <repository-url>
Лучшие практики
- Коммиты стоит делать часто и заблаговременно
- Почему? Частые коммиты позволяют разбить работу на несколько сегментов и упрощают отслеживание изменений. Например, если вы работаете над большой фичей, разбейте ее на более мелкие составляющие и делайте коммиты для каждой части с комментариями.
- Использование осмысленные сообщения к коммитам
- Почему? Четкое и лаконичное сообщение, описывающие коммит, поможет другим (и вам в будущем) понять цель отдельного коммита. Например:
git commit -m "Обновлены тесты в соответствии с новой функциональностью"
- Создание отдельной ветки для каждой фичи
- Почему? Всегда создавайте новую ветку под конкретную фичу или багфикс. Это сохраняет основную ветку стабильной и упрощает тестирование и ревью. Например, создание ветки фич:
git branch feature/user-auth
- Регулярное подтягивание изменений
- Почему? Регулярный pull из удалённого репозитория помогает избежать конфликтов при слиянии. При командной работе важно всегда быть в курсе актуального состояния кода.
- Используйте rebase вместо merge для чистоты истории
- Почему? Rebase помогает избежать лишних merge-коммитов и сохраняет историю проекта линейной и читаемой. Например, чтобы обновить свою ветку относительно основной:
git checkout feature/user-authgit rebase main
- Держите main ветку чистой
- Всегда старайтесь, чтобы ветка main оставалась стабильной и готовой к деплою. В неё должны попадать только проверенные и протестированные изменения — это минимизирует риск багов в продакшене.
- Используйте .gitignore, чтобы исключения лишних файлов
- Проект может содержать временные файлы сборки или локальные конфигурации, которые не нужно включать в репозиторий. Файл
.gitignoreуказывает Git, что следует игнорировать. Например: /node_modules.DS_Store
- Используйте сквош коммитов для чистоты истории
- Если вы сделали много мелких коммитов при работе над фичей, имеет смысл объединить их перед слиянием в основную ветку. Это делает историю чище и понятнее::
git rebase -i HEAD~<количество коммитов>
- Проверяйте изменения перед коммитом
- Перед коммитом просматривайте изменения с помощью команды ниже, чтобы случайно не зафиксировать ненужные правки:
git diff
Заключение
Git — чрезвычайно мощный инструмент в руках тех, кто умеет им пользоваться. Освоив как базовые, так и продвинутые команды, вы сможете эффективно управлять кодовой базой, легко взаимодействовать с командой и избегать типичных ошибок. Соблюдение лучших практик — частые коммиты, информативные сообщения и упорядоченная работа с ветками — значительно улучшит ваш рабочий процесс с Git.
По мере того как вы всё лучше осваиваете продвинутые команды Git — такие как git rebase, git cherry-pick и git bisect — вы будете готовы справляться даже с самыми сложными задачами контроля версий. Благодаря приведённым примерам у вас теперь есть прочная основа, чтобы вывести свои навыки работы с Git на следующий уровень.
Счастливого тестирования! 🙂
Перевод статьи «Git Commands for Test Automation: Best Practices and Advanced Techniques».
