惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Cisco Blogs
Schneier on Security
Schneier on Security
T
Tor Project blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tenable Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Threat Research - Cisco Blogs
C
CERT Recently Published Vulnerability Notes
Security Latest
Security Latest
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
NISL@THU
NISL@THU
L
Lohrmann on Cybersecurity
Scott Helme
Scott Helme
Webroot Blog
Webroot Blog
Project Zero
Project Zero
Google Online Security Blog
Google Online Security Blog
The Last Watchdog
The Last Watchdog
Spread Privacy
Spread Privacy
Hacker News: Ask HN
Hacker News: Ask HN
PCI Perspectives
PCI Perspectives
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
W
WeLiveSecurity
Attack and Defense Labs
Attack and Defense Labs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
N
News | PayPal Newsroom
Help Net Security
Help Net Security
The Hacker News
The Hacker News
H
Heimdal Security Blog
O
OpenAI News
S
Security @ Cisco Blogs
N
News and Events Feed by Topic
Cyberwarzone
Cyberwarzone
Simon Willison's Weblog
Simon Willison's Weblog
G
GRAHAM CLULEY
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 叶小钗
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
I
Intezer
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Security Affairs
P
Proofpoint News Feed
S
Secure Thoughts
腾讯CDC
Google DeepMind News
Google DeepMind News
量子位
罗磊的独立博客

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Git для QA Engineer
makurea · 2026-06-01 · via Все публикации подряд на Хабре

Простой

6 мин

11K

Содержание

Введение
Что такое Git
История создания Git
Зачем Git нужен тестировщику
Основные концепции Git
Принцип работы Git
Основные команды Git
Работа с ветками
Конфликты и merge
Git Flow и подходы к разработке
GUI-инструменты для работы с Git
Практические сценарии для QA
Типичные ошибки новичков
Выводы

Введение

Практически в любой современной IT-команде используется Git. Даже если тестировщик не пишет production-код, ему всё равно регулярно приходится работать с репозиториями: запускать проект локально, переключаться между ветками, смотреть изменения, обновлять тестовые данные или участвовать в code review.

Во многих вакансиях для QA знание Git уже считается базовым навыком — особенно для специалистов уровня Middle и выше. А для автоматизаторов Git вообще является обязательным инструментом ежедневной работы.

При этом многие начинающие тестировщики знают только несколько команд (clone, pull, push) и боятся всего остального. Из-за этого возникают проблемы: потерянные изменения, конфликты, случайные коммиты в main-ветку и путаница при работе в команде.

Данная статья — это практический обзор Git именно с точки зрения QA-инженера. Мы разберём:

  • как устроен Git;

  • какие команды действительно нужны тестировщику;

  • как безопасно работать с ветками;

  • как не ломать чужой код;

  • и как Git помогает в ежедневной работе QA.

Что такое Git

Git — это распределённая система контроля версий (Version Control System), предназначенная для отслеживания изменений в файлах и совместной работы над проектом.

Что такое Git

Что такое Git

Проще говоря, Git позволяет:

  • сохранять историю изменений;

  • возвращаться к предыдущим версиям файлов;

  • работать нескольким людям одновременно;

  • безопасно экспериментировать с кодом;

  • объединять изменения разных разработчиков.

Главная особенность Git — каждая копия репозитория содержит полную историю проекта. Это отличает Git от старых централизованных систем контроля версий.

В Git изменения сохраняются не как «новая версия файла», а как набор снимков состояния проекта (snapshots).

Типичный workflow выглядит так:

  1. Разработчик или QA получает проект (git clone);

  2. Вносит изменения;

  3. Сохраняет их локально (commit);

  4. Отправляет изменения в удалённый репозиторий (push);

  5. Остальные участники получают обновления (pull).

История создания Git

Git был создан в 2005 году Linus Torvalds после конфликта сообщества Linux с системой BitKeeper, которая ранее использовалась для разработки ядра Linux.

Линус Торвальдс

Линус Торвальдс

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

  • высокая скорость;

  • надёжность;

  • поддержка распределённой разработки;

  • возможность работать с огромным количеством изменений.

В результате Git стал одной из самых популярных систем контроля версий в мире. Сегодня его используют практически все крупные IT-компании и open-source проекты.

Зачем Git нужен тестировщику

Для QA Git полезен не меньше, чем разработчику.

Основные сценарии использования:

  1. Получение актуальной версии проекта Тестировщик может самостоятельно обновить локальную сборку без ожидания разработчиков.

  2. Работа с автотестами Практически все UI/API-автотесты хранятся в Git-репозиториях.

  3. Просмотр изменений Git помогает понять:

  • какие файлы изменились;

  • какие фичи были добавлены;

  • какие модули затронуты.

  1. Анализ багов Через историю коммитов можно выяснить:

  • кто изменил код;

  • когда появилась проблема;

  • какой commit её вызвал.

  1. Работа с feature-ветками QA может тестировать отдельную ветку ещё до попадания изменений в main.

  2. Code Review тестов Для автоматизаторов Git необходим для review автотестов и совместной разработки framework’а.

Основные концепции Git

Перед изучением команд важно понять базовые сущности Git.

Термин

Описание

Repository (репозиторий)

Проект вместе с историей изменений

Commit

Сохранённое состояние проекта

Branch

Отдельная линия разработки

Merge

Объединение изменений

Remote

Удалённый репозиторий

Clone

Копирование репозитория

Pull

Получение изменений

Push

Отправка изменений

Staging Area

Область подготовки файлов перед commit

HEAD

Указатель на текущий commit

Одна из самых важных особенностей Git — разделение между:

  • рабочей директорией;

  • staging area;

  • историей commit’ов.

Из-за этого новичкам Git часто кажется сложным.

Принцип работы Git

Git работает локально. Большинство операций выполняются без доступа к серверу.

Типичный цикл выглядит так:

Принцип работы Git

Принцип работы Git

Это важно понимать:

  • git add НЕ отправляет файл на сервер;

  • git commit сохраняет изменения только локально;

  • только git push отправляет изменения в remote repository.

Git отслеживает изменения через хэши SHA-1. Каждый commit содержит:

  • уникальный идентификатор;

  • автора;

  • дату;

  • комментарий;

  • ссылку на предыдущий commit.

Благодаря этому Git умеет:

  • восстанавливать историю;

  • сравнивать версии;

  • откатывать изменения;

  • объединять ветки.

Основные команды Git

Основные команды Git

Основные команды Git

Базовые команды

Команда

Назначение

git clone url

Клонировать репозиторий

git status

Проверить состояние файлов

git add file

Добавить файл в staging

git commit -m "message"

Создать commit

git push

Отправить изменения

git pull

Получить изменения

git fetch

Скачать изменения без merge

git log

Посмотреть историю commit’ов

git diff

Посмотреть изменения

git reset

Сбросить изменения

git revert

Откатить commit безопасным способом

Примеры основных операций

Клонирование проекта

git clone https://github.com/project/backend.git

Проверка состояния

git status

Добавление файла

git add test_login.py

Commit изменений

git commit -m "Added login API tests"

Отправка изменений

git push

Получение обновлений

git pull

Просмотр истории

git log --oneline

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

git diff

Работа с ветками

Ветки (branches) — одна из главных причин популярности Git.

Они позволяют:

  • разрабатывать новые функции изолированно;

  • тестировать изменения независимо;

  • безопасно экспериментировать.

Работа с ветками

Работа с ветками

Основные команды для веток

Команда

Назначение

git branch

Показать список веток

git checkout branch

Переключиться на ветку

git checkout -b branch

Создать новую ветку

git switch branch

Современный аналог checkout

git merge branch

Объединить ветки

git branch -d branch

Удалить ветку

Пример workflow QA

git checkout develop
git pull

git checkout -b feature/login-tests

# написание тестов

git add .
git commit -m "Added login tests"

git push origin feature/login-tests

Конфликты и merge

Merge Conflict

Merge Conflict

Когда несколько человек изменяют один и тот же участок файла, Git может не понять, какую версию оставить. Тогда возникает merge conflict.

Пример конфликта:

<<<<<<< HEAD
old code
=======
new code
>>>>>>> feature-branch

QA-инженеру важно уметь:

  • понимать причину конфликта;

  • аккуратно объединять изменения;

  • не удалять чужой код случайно.

После исправления конфликта нужно:

git add .
git commit

Важно:

  • никогда не делать merge «вслепую»;

  • всегда читать конфликтующие участки;

  • проверять проект после merge.

Git Flow и подходы к разработке

В командах используются разные стратегии работы с Git.

Git Flow / CI-CD / QA Pipeline

Git Flow / CI-CD / QA Pipeline

Git Flow

Классическая модель:

  • main — production;

  • develop — основная разработка;

  • feature/* — новые функции;

  • release/* — подготовка релиза;

  • hotfix/* — срочные исправления.

Trunk Based Development

Более современный подход:

  • одна основная ветка;

  • маленькие короткоживущие feature branches;

  • частые merge.

QA важно понимать используемый workflow, чтобы:

  • правильно тестировать ветки;

  • не путать окружения;

  • понимать процесс релиза.

GUI-инструменты для работы с Git

Не все QA работают через терминал. Существуют удобные GUI-клиенты.

GUI инструменты

GUI инструменты

GitHub Desktop

Простой интерфейс для базовых операций:

  • commit;

  • push/pull;

  • работа с ветками;

  • просмотр diff.

SourceTree

Популярный GUI-клиент с визуализацией веток и merge.

GitKraken

Современный интерфейс и удобная работа с конфликтами.

Visual Studio Code

Позволяет работать с Git прямо внутри IDE.

Для QA чаще всего достаточно:

  • VS Code;

  • GitHub Desktop;

  • базовых консольных команд.

Практические сценарии для QA

Проверка конкретной feature-ветки

git checkout feature/payment-api
git pull

Получение последних изменений перед тестированием

git pull origin develop

Быстрый просмотр изменённых файлов

git diff --name-only

Откат локальных изменений

git restore .

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

git blame file.java

Временное сохранение изменений

git stash
git stash pop

Это особенно полезно, когда QA:

  • переключается между задачами;

  • тестирует несколько веток;

  • быстро меняет окружения.

Типичные ошибки новичков

Ошибка

Почему это плохо

Commit в main/master

Можно сломать production-ветку

git push --force без понимания

Можно удалить чужие изменения

Работа без git pull

Возникают конфликты

Огромные commit’ы

Сложно review и искать баги

Непонятные commit messages

История становится бесполезной

Игнорирование .gitignore

В репозиторий попадают мусорные файлы

Merge без проверки

Можно сломать сборку

Выводы

Финальная шпаргалка

Финальная шпаргалка

Git — один из базовых инструментов современного QA-инженера.

Даже если тестировщик не занимается разработкой, Git помогает:

  • работать с feature-ветками;

  • запускать проекты локально;

  • анализировать изменения;

  • быстрее находить причины багов;

  • эффективнее взаимодействовать с разработчиками.

Для автоматизаторов Git вообще является обязательным навыком, без которого невозможно полноценное участие в разработке тестового framework’а.

Главное — не пытаться запомнить все команды сразу. В реальной работе регулярно используется ограниченный набор операций:

  • clone

  • pull

  • status

  • add

  • commit

  • push

  • checkout

  • merge

Остальное приходит с практикой.

Где потренироваться

Теория — это половина дела. Git лучше всего осваивается на практике. Вот два отличных бесплатных ресурса, где можно «набить руку» безопасно, не ломая реальный репозиторий:

  • Learn Git Branching — интерактивный визуальный тренажёр с русским интерфейсом. Лучший способ понять ветки, merge, rebase и конфликты через наглядные диаграммы и задачи.

  • Git Mastery — современный тренажёр с пошаговыми сценариями от базовых команд до продвинутых приёмов. Подходит для закрепления материала из этой статьи.

Рекомендуется: сначала прочитать статью, а потом пройти хотя бы первые 3-4 уровня в любом из тренажёров — разница в понимании Git будет колоссальной.

Спасибо за внимание

Спасибо за внимание

Спасибо за внимание. Надеюсь, материал был полезен.