Теорія
Іконки, кольори й перевірки: що означає кожен стан GitHub
Читаємо статуси pull request, issues, GitHub checks, рев'ю, мітки й блок мерджу з першого погляду: що означає кожна іконка й колір, чим змерджений PR відрізняється від закритого і як розрізняти стани за формою й текстом, а не лише за кольором.
~10 хв читання · 12 вправ · 250 балів
Перед початком
Хвилина зі списком
Ще один ранок у продуктовій команді Котокорму, і Daniel ось-ось змерджить #134. Поки він цього не зробив, ти відкриваєш у репозиторії вкладку Pull requests і просто хвилину дивишся на список: іконки, кольори й маленькі позначки біля кожної назви.
У цьому уроці ти навчишся з першого погляду читати будь-який стан на GitHub — pull requests, issues, перевірки, рев'ю, мітки й блок злиття — і розрізняти їх за формою та текстом, а не лише за кольором.
Статус pull request з першого погляду
У списку Pull requests репозиторію кожен рядок починається з іконки: це статус pull request. Станом на 2026 рік їх чотири, і кожна має не лише колір, а й власну форму:
- Відкритий (open): іконка pull request, дві точки, з'єднані лініями зі стрілкою. Зелена. Чекає на рев'ю чи мердж.
- Чернетка (draft): та сама іконка з пунктирною лінією. Сіра. Робота триває; змерджити не можна.
- Змерджений (merged): дві лінії сходяться в одну. Фіолетова. Зміни вже в базовій гілці.
- Закритий (closed): іконка pull request із маленьким хрестиком. Червона. Закритий без мерджу; до коду нічого не потрапило.
Fix checkout button after cart edits#134
автор Daniel · Approved · перевірки пройдено · bug, checkout
Add autumn sale banner#136
авторка Emma · Draft · content
Bump image-optimizer from 2.3.0 to 2.4.1#137
автор dependabot · Review required · 1 перевірка впала · dependencies
Маленька позначка біля назви це інше: зведений результат перевірок.
За замовчуванням список показує лише Open. Змерджені й закриті pull requests лежать разом у Closed, поруч. Деякі рядки створюють боти: Dependabot, наприклад, відкриває pull request щоразу, коли бібліотека, яку використовує сайт, отримує нову версію. У терміналі gh pr list --state merged показує лише змерджені.
- Так«#133 змерджено; #127 закрили без мерджу».
Читає форму й називає стан.
- Не так«Куди подівся #133? Його немає в списку, отже, його скасували».
За замовчуванням список показує
Open; змерджені лежать уClosed.
Вкладка Closed містить два різні фінали
Вкладку Closed у списку pull requests легко прочитати неправильно. Вона містить усі pull requests, які вже не відкриті, а це два дуже різні фінали:
- Змерджений: іконка мерджу, дві лінії сходяться. Зміни вже в базовій гілці. У Котокорму мердж у
mainза кілька хвилин потрапляє на сайт. - Закритий без мерджу: іконка pull request із хрестиком. Його хтось закрив, і нічого з нього не дійшло до коду. Експеримент, що не вдався, дублікат чи робота, яку замінив кращий pull request.
Тож «він у Closed» каже лише, що pull request завершено, але не як. Читай іконку в кожному рядку, а не назву вкладки.
Для PM це важливо в кожному звіті. «За тиждень закрито п'ять pull requests» може означати п'ять випущених змін або п'ять покинутих. Рахуй змерджені й закриті окремо й називай кожен: «#132 і #133 змерджено, #127 закрили без мерджу». Якщо потрібен лише один вид, відфільтруй: is:merged або is:unmerged у полі пошуку над списком.
- Так«Цього тижня: #132 і #133 змерджено, #127 закрили без мерджу».
Два фінали, пораховані окремо.
- Не так«Цього тижня закрили три pull requests, гарний прогрес».
Змішує випущену й покинуту роботу.
Спершу форма, потім колір: називай стани словами
Сам колір слабкий сигнал. На сонці з телефона фіолетовий і сірий виглядають майже однаково. Приблизно кожен 12-й чоловік і кожна 200-та жінка бачать деякі кольори інакше, найчастіше червоний і зелений. А в налаштуваннях вигляду GitHub є теми для людей із порушеннями сприйняття кольору, які замінюють червоний і зелений іншими кольорами, тож екран колеги може зовсім не збігатися з твоїм.
Тому GitHub супроводжує кожен колір стану формою і словом: галочка, хрестик, пунктир, дві лінії, що сходяться; «Merged», «Draft», «Closed». Читай їх першими.

Та сама звичка діє, коли ти пишеш чи говориш про стани. Називай їх:
- «#133 змерджено».
- «#136 досі чернетка».
- «#138 закрили як незаплановане».
Ніколи «фіолетовий» чи «той сірий». Слово-колір змушує читача бачити те саме, що й ти, а дехто не може. Слово-стан працює для всіх, на будь-якому екрані й у будь-якій темі, і зрозуміле, навіть коли його вимовляють уголос на зустрічі.
- Так«#136 досі чернетка; Emma ще не просила рев'ю».
Слово-стан, зрозуміле всім.
- Не так«Сірий це Emma, а фіолетові готові».
Залежить від екрана, теми й зору.
Стани issue: випущено чи скасовано
Issues мають власні іконки, і всі вони кола, тож їх одразу видно серед pull requests. Станом на 2026 рік:
- Відкрите: коло з крапкою всередині, зелене.
- Закрите як виконане (completed): коло з галочкою, фіолетове. Роботу зроблено. Фіолетовий тут означає «завершено», як і на змердженому pull request.
- Закрите як незаплановане (not planned): коло з косою рискою, сіре. Команда вирішила цього не робити.
Checkout button stays grey after editing cart#131
відкрила підтримка · bug, checkout · пов'язаний pull request #134
Test an orange checkout button#135
відкрив Daniel · idea
Courier rates up from 1 June#120
Closed as completed: закрито як виконане
Show prices in euros#138
Closed as not planned: закрито як незаплановане
Коли issue закривають, GitHub питає причину, і іконка її відображає. Команда, яка вирішила не показувати ціни в євро, закриває цю ідею як незаплановану, а не вдає, що її зроблено. У терміналі: gh issue close 138 --reason "not planned". GitHub пропонує ще й причину «duplicate» (дублікат).
Для PM це різниця між випущеним і скасованим. Обидва issues закриті, але лише одне означає, що роботу хтось зробив. У звітах про issues ніколи не рахуй їх разом. І пам'ятай: фіолетовий змерджений pull request і фіолетове виконане issue мають спільний колір, але не форму.

- Так«#131 закрито як виконане, #138 закрито як незаплановане».
Випущене й скасоване окремо.
- Не так«Цього тижня закрито два issues, обидва готові».
Одне з них так і не зробили.
Перевірки GitHub з першого погляду
Перевірки GitHub (checks) це автоматичні запуски, які GitHub показує на кожному коміті pull request: збирання сайту, тести, деплой preview. Команда може зробити деякі з них обов'язковими (required status checks), і тоді pull request не змерджиш, поки одна з них падає.
Кожна перевірка має один із чотирьох результатів (станом на 2026 рік):
- коло з галочкою, зелене: пройшла;
- коло з хрестиком, червоне: впала;
- крапка, жовта: у черзі чи ще триває;
- сіра, часто коло з косою рискою: пропущена (skipped) або нейтральна; перевірка не запускалася чи не дала вердикту.
build
Successful: успішно
test
Failing: впав 1 тест на зображення товарів
preview
Skipped: для оновлень залежностей preview не запускають
Маленька позначка біля назви pull request у списку підсумовує всі його перевірки: один червоний хрестик означає, що впала принаймні одна. Відкрий pull request або виконай gh pr checks 137, щоб побачити, яка саме.
Читай результат як він є: це твердження про конкретну гілку. Червоний хрестик на #137 від Dependabot означає, що оновлення бібліотеки зламало тест у його власній гілці. Живий сайт, зібраний із main, працює.
- Так«На гілці #137 упав
test; живий сайт це не зачіпає».Каже, де саме падіння.
- Не так«Жовта крапка означає, що перевірка пройшла з попередженнями».
Жовта означає «у черзі» чи «ще триває».
Пропущено не означає пройдено
Сіра, пропущена перевірка це найпідступніший результат на сторінці. Вона виглядає спокійно, вона не червона, і станом на 2026 рік пропущене завдання не блокує мердж, навіть коли перевірка обов'язкова. GitHub вважає, що «скаржитися нема на що».
Але «пропущено» означає, що перевірка не запускалася. Preview ніхто не зібрав, тести ніхто не прогнав. Це як пропускний пункт із порожньою будкою й піднятим шлагбаумом: машини проїжджають, і ніхто не зазирнув усередину.

Перевірки пропускаються з буденних причин: процес запускається лише тоді, коли змінюються певні файли, pull request від бота не отримує секретів, або завдання залежить від іншого, яке впало. На #137 від Dependabot preview пропущено, тож посилання на preview немає.
Вигляд GitHub · є вище
Що це означає для PM:
- Не звітуй про пропущену перевірку як про «все зелене».
- Якщо пропущена перевірка стосується того, що тобі треба переглянути (скажімо, preview), спитай, чому вона не запускалася, перш ніж схвалювати.
- У статусі кажи прямо: «
testупав,previewпропущено».
- Так«На #137
previewпропущено, тож оновлення в браузері ще ніхто не бачив».Сприймає «пропущено» як «не перевірено».
- Не так«На
previewнемає червоного, отже, там усе гаразд».Вона взагалі не запускалася.
Вердикти рев'ю та їхні іконки
Рев'ю теж мають іконки. На сторінці pull request вони стоять біля імені кожного рев'юера в бічній панелі (станом на 2026 рік):
- галочка: схвалено, можна зливати;
- файл із плюсом і мінусом: запит на зміни, спершу щось треба змінити;
- хмаринка діалогу: коментар, відгук без вердикту;
- маленька крапка: рев'ю попросили, і воно ще чекає; людина ще не переглядала.
Approved
Галочка: рев'юер каже, що можна зливати
Changes requested
Файл із плюсом і мінусом: спершу потрібні зміни
Commented
Хмаринка діалогу: коментарі без вердикту
У списку pull requests кожен рядок підсумовує рев'ю словами: «Review required» (схвалення ще немає), «Approved» чи «Changes requested». Pull request від Dependabot, який ніхто не відкривав, каже «Review required».
Дві речі варто пам'ятати. Коментар не схвалення: рев'юер, який лише ставив питання, ще не сказав «так». А крапка біля твого власного імені означає, що хтось чекає саме на тебе. Швидкий фільтр для цього: review-requested:@me у пошуку pull requests або gh pr list --search "review-requested:@me" у терміналі.
- Так«Oscar схвалив, Sofia прокоментувала питанням; вердикту від Sofia ще немає».
Відрізняє коментар від схвалення.
- Не так«Двоє рев'юерів відповіли, отже, схвалено двічі».
Хмаринка діалогу не галочка.
Мітки: кольори команди
Мітки (labels) це єдине місце, де колір нічого не означає для GitHub. Колір мітки обирає той, хто її створює. Нові репозиторії мають кілька стандартних, як-от червону bug, але команда хоч завтра може зробити bug рожевою, а синя мітка синя лише тому, що хтось обрав синій.
Тож розрізняй дві речі:
- стан показує іконка зліва в рядку: відкритий, чернетка, змерджений, закритий;
- мітка каже, чого стосується елемент:
bug,checkout,content,idea,dependencies.
Червона мітка bug на відкритому pull request це просто відкритий pull request про баг. Вона не означає «терміново», «впало» чи «заблоковано». Синя мітка dependencies не означає, що перевірки пройшли чи що pull request чекає на рев'ю. Деякі мітки додаються автоматично: Dependabot ставить dependencies на власні pull requests.
Невеликий набір міток читати легше, ніж великий. П'ять міток, зрозумілих усій команді, кращі за п'ятдесят у дванадцяти кольорах. Фільтр за міткою: gh pr list --label bug.
- Так«#137 відкритий; він має мітку
dependencies, бо оновлює бібліотеку».Стан з іконки, тема з мітки.
- Не так«Вона червона, отже, це терміново».
Колір мітки це вибір команди, а не статус.
Блок мерджу згори донизу
Унизу Conversation блок мерджу показує, що ще стоїть між pull request і мерджем. Станом на 2026 рік він може казати:
- Review required: схвалення ще немає. Заблоковано.
- Changes requested: рев'юер попросив змін. Заблоковано.
- Some checks were not successful: перевірка впала. Заблоковано, якщо вона обов'язкова.
- Some checks haven't completed yet: перевірки тривають. Чекай.
- This branch is out-of-date with the base branch: коли правила вимагають оновленої гілки, натисни
Update branch. - This branch has conflicts that must be resolved: спершу хтось має розв'язати конфлікти.
- All checks have passed і no conflicts, плюс схвалення: кнопка мерджу стає зеленою.
Update branch зливає базову гілку в гілку pull request (у терміналі gh pr update-branch 134). Це новий коміт, тож перевірки запускаються знову, і тепер вони тестують зміну разом з усім, що потрапило в main відтоді. Точні формулювання з роками змінюються; зміст ні.
f02a6d4Update FAQ answers3a9d1c4Reproduce bug in a test8be2f70Add cat treats bundleb7e4a05Re-enable button after cart edits6f2c8a1Raise free-delivery threshold to 1000 UAH (#133)a7d93e4Rewrite delivery page copy (#132)mainc2d7f90Update checkout hint copyf7a2b61Restore checkout button colour9e3b5d2Merge branch 'main' into fix/checkout-buttonfix/checkout-button
Граф комітів, від найстарішого: fix/checkout-button після Update branch 1. коміт f02a6d4 у main "Update FAQ answers" 2. гілка fix/checkout-button починається від коміту f02a6d4 3. коміт 3a9d1c4 у fix/checkout-button "Reproduce bug in a test" 4. коміт 8be2f70 у main "Add cat treats bundle" 5. коміт b7e4a05 у fix/checkout-button "Re-enable button after cart edits" 6. коміт 6f2c8a1 у main "Raise free-delivery threshold to 1000 UAH (#133)" 7. коміт a7d93e4 у main "Rewrite delivery page copy (#132)" 8. коміт c2d7f90 у fix/checkout-button "Update checkout hint copy" 9. коміт f7a2b61 у fix/checkout-button "Restore checkout button colour" 10. мердж-коміт 9e3b5d2: main змерджено в fix/checkout-button "Merge branch 'main' into fix/checkout-button" (виділено)
- Так«#134 застарів; Daniel натиснув
Update branch, і перевірки запустилися знову».Читає повідомлення й наступний крок.
- Не так«Два схвалення й зелені перевірки, отже, кнопка мерджу має працювати».
Застаріла гілка все одно може блокувати мердж.
Змерджений чи закритий, і що буває після мерджу
Розрізняй два фінали pull request. Змерджений переніс свої коміти в базову гілку. Закритий закрили без мерджу, і до коду нічого з нього не потрапило. Обидва лежать у Closed у списку, тож читай іконку, а не вкладку.
У Котокорму мердж #134 у main запускає ланцюжок:
- Із
Squash and mergeуmainз'являється один коміт: «Fix checkout button after cart edits (#134)». - Ключове слово
Fixes #131закриває issue #131 як виконане: коло з галочкою. - Змерджена гілка видаляється автоматично, це налаштування репозиторію, яке команда ввімкнула.
- Починається деплой. «Змерджено» стає «на сайті» лише тоді, коли він завершиться, за кілька хвилин; тоді варто ще раз глянути на живий сайт із телефона.
Fix checkout button after cart edits#134
Змерджено в main як d51c7e8
Checkout button stays grey after editing cart#131
Закрито як виконане завдяки #134
І три питання про будь-який мердж: змерджено куди, коли і чи воно досі там? Для #134: main, 9:40, і так, ніхто його не відкотив.
- Так«#134 змерджено в
mainо 9:40, #131 закрито як виконане, на сайті після деплою».Куди, коли й що далі.
- Не так«#127 у Closed, отже, його випустили».
Закритий без мерджу означає, що нічого не випущено.
Готові потренуватися?
Виконайте вправи уроку й отримайте 250 балів, коли пройдете його вперше.
Розпочати вправи