🔥 Важное для 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 stash
git 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 start
git 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-auth
git 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».