GitHub — е най-голямата уеб платформа за хостинг на Git хранилища, съвместна разработка и автоматизация на процеси, собственост на Microsoft. Тя предоставя не само съхранение на код с контрол на версиите, но и пълен набор от инструменти за управление на проекти: Issue Tracking, Pull Request с преглед на код, Actions за CI/CD и Wiki за документация. Според данните на GitHub, 2024, платформата има над 100 милиона разработчици и 420 милиона хранилища.
Основни точки
GitHub — е уеб услуга за съхранение и съвместна работа върху Git хранилища, основана през 2008 г. от Том Престън-Уърнър, Крис Уанстрат и П. Дж. Хайет. През 2018 г. компанията беше закупена от Microsoft за 7,5 милиарда долара. Платформата предоставя уеб интерфейс за всички Git операции, добавяйки отгоре социални функции: форкове, звезди, абонаменти, преглед на код и вградена система за непрекъсната интеграция.
Основната разлика на GitHub от конкурентите — отворената екосистема и най-голямата общност от разработчици. В GitHub се намират изходните кодове на Android, Kubernetes, React, Swift, Kotlin и хиляди други open-source проекти. Това прави платформата не само инструмент за съхранение на код, но и социална мрежа за разработчици: можете да следите проекти, да обсъждате промени и да допринасяте чрез pull request.
Според доклада на Microsoft (2024), през GitHub дневно преминават над 10 милиона нови Pull Request-а, а броят на месечните активни потребители надхвърли 100 милиона. Платформата поддържа над 500 езика за програмиране, автоматично откриване на езика по разширението на файла и оцветяване на синтаксиса на кода.
Функционалността на GitHub далеч надхвърля обикновения хостинг на Git. Платформата предлага: GitHub Actions — вградена CI/CD система; GitHub Packages — регистър на пакети и контейнери; GitHub Codespaces — облачни среди за разработка, базирани на VS Code; GitHub Discussions — форум за общността; GitHub Security — Dependabot за автоматично актуализиране на зависимости и сканиране на уязвимости; GitHub Copilot — AI асистент за писане на код.
За организациите GitHub предлага GitHub Enterprise — корпоративна версия със собствен хостинг (GitHub Enterprise Server) или облачно внедряване (GitHub Enterprise Cloud). Корпоративните функции включват SAML/SSO удостоверяване, одит на дейностите, политики за сигурност на хранилищата и SLA за 99,95% наличност. Enterprise версията се използва от компании като Google, Apple и Airbnb.
Важна характеристика на GitHub — GitHub CLI (gh), който позволява извършването на всички операции на платформата от командния ред без използване на уеб интерфейса. С gh можете да създавате хранилища, да управлявате Issues, да преглеждате Pull Request и да стартирате Actions директно от терминала, което ускорява работата на разработчиците, свикнали с командния ред.
| Функция | Предназначение | Наличност |
|---|---|---|
| Actions | CI/CD и автоматизация | Безплатно 2000 мин/мес |
| Codespaces | Облачно IDE, базирано на VS Code | Платено, 60 ч/мес безплатно |
| Packages | Хостинг на пакети и Docker изображения | Безплатно 500 MB |
| Dependabot | Автоматично актуализиране на зависимости | Безплатно за публични хранилища |
| Pages | Хостинг на статични сайтове | Безплатно |
Pull Request (PR) — е основният механизъм за извършване на промени в проект в GitHub. Разработчикът създава клон с промените, публикува го в GitHub и изпраща заявка за сливане (Pull Request) до основния клон. Другите участници в проекта виждат разликата (diff) между клоновете, могат да оставят коментари на конкретни редове код, да предлагат промени и да одобряват или отхвърлят заявката.
Процесът на преглед на код в GitHub е изграден около PR. Всеки коментар се прикрепя към конкретен ред от diff-а и може да бъде от три типа: Comment (обикновен коментар), Request Changes (изисква корекции) и Approve (одобрение). След извършване на промените, авторът актуализира PR с нов commit и процесът на преглед се повтаря. Когато всички забележки са отстранени и PR е одобрен, промените се сливат в целевия клон.
# Създаване на feature клон и push
git checkout -b fix-login-bug
git add src/
git commit -m "Fix login validation error"
git push -u origin fix-login-bug
# Създаване на PR чрез CLI
gh pr create --base main --title "Fix login validation" \
--body "Fixed edge case with empty email field"
# Преглед и merge на PR
gh pr review --approve fix-login-bug
gh pr merge --squash fix-login-bug
GitHub поддържа защита на клонове (branch protection rules): можете да забраните директен push към main, да изисквате задължителен брой одобрения преди merge, да стартирате проверки на Actions и да изисквате актуалност на клона преди сливане. Защитата на клонове се конфигурира в Settings → Branches и е задължителна практика за производствени проекти, предотвратяваща случайното внасяне на нестабилен код в основния клон.
GitHub Actions — е вградена CI/CD платформа, която позволява автоматизация на работните потоци директно в хранилището. Работният поток се описва в YAML файлове, намиращи се в директорията .github/workflows/. Всеки работен поток се състои от една или повече задачи (job), които се изпълняват на runner-и — виртуални машини с Linux, Windows или macOS.
Actions поддържа модел, управляван от събития: работният поток се задейства при push, създаване на PR, публикуване на release, по разписание или чрез webhook. Това позволява автоматизация на изграждане, изпълнение на тестове, статичен анализ на код, публикуване в магазини за приложения и внедряване на сървър без участието на разработчика. По-долу е даден пример за работен поток за Android проект:
name: Android CI
on:
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
- name: Build with Gradle
run: ./gradlew assembleDebug
Екосистемата на Actions включва над 20 000 готови действия в GitHub Marketplace. Популярни действия: checkout (клониране на хранилище), setup-java/setup-node/setup-python (конфигуриране на среда), upload-artifact (запазване на артефакти от изграждането), cache (кеширане на зависимости за ускоряване), slack-notify (изпращане на известия до Slack). Actions също така поддържа матрично изграждане — едновременно стартиране на няколко версии на операционни системи или езици.
Issues — е вградената система за проследяване на задачи в GitHub. Всеки Issue има заглавие, описание, етикети (labels), определени изпълнители (assignees), етапи (milestones) и свързани Pull Request. Issues могат да бъдат шаблонизирани — за доклади за грешки, заявки за функции или въпроси се използват различни шаблони, които автоматично се заместват при създаване.
GitHub Projects (преди Projects Beta) — е инструмент за управление на проекти, базиран на дъски, подобен на Jira и Trello. Projects поддържа персонализирани полета (статус, приоритет, спринт), връзка с Issues и Pull Request, автоматизация на преместването на карти при промяна на статуса на задачата и аналитика под формата на диаграма на изгаряне на задачите (burndown chart). Projects е достъпен в два режима: Table (табличен изглед) и Board (канбан дъска).
За управление на версиите GitHub предлага Milestones — групи от Issues и PR, обединени от обща цел с краен срок. Всеки етап показва напредъка: колко задачи са отворени, колко затворени и дали срокът се спазва. Milestones се интегрират с Releases — при публикуване на версия можете да я свържете с етап и автоматично да генерирате списък с промени в CHANGELOG въз основа на затворените Issues.
GitHub Pages — е безплатен хостинг за статични сайтове, който автоматично публикува съдържанието на хранилището на адрес https://username.github.io/repository. Pages поддържа HTML, CSS, JavaScript и статични генератори: Jekyll (вграден), Hugo, Next.js (експорт) и MkDocs. Конфигурацията включва избор на клон и директория за публикуване, както и поддръжка на персонализиран домейн.
За техническа документация GitHub предлага Wiki — вградена уики система, която също се съхранява като Git хранилище. Wiki поддържа Markdown и позволява редактиране на страници както чрез уеб интерфейса, така и локално чрез push в уики хранилището. Всяка Wiki страница има собствена история на промените, което е удобно за документиране на API, архитектура и процеси на проекта.
Комбинацията GitHub Pages + Jekyll — популярно решение за сайтове с документация. Jekyll автоматично преобразува Markdown файлове в статични HTML страници, поддържа теми, навигация и търсене. Например документацията на Android Developers преди използваше Jekyll на GitHub Pages, а сега — вътрешна платформа, но хиляди open-source проекти продължават да използват тази комбинация за своите сайтове.
GitHub CLI (gh) позволява извършването на всички операции на платформата чрез командния ред: създаване на хранилища, управление на Issues, преглед и одобряване на Pull Request, стартиране на Actions. Командата gh repo create my-project --public създава отдалечено хранилище и го свързва с локалното, а gh pr create създава Pull Request от текущия клон. CLI ускорява работата на разработчиците, които предпочитат терминала пред уеб интерфейса.
GitHub REST API и GraphQL API предоставят програмен достъп до всички функции на платформата: създаване на Issue, управление на потребители, получаване на статистика и управление на Actions. GraphQL API е за предпочитане за сложни заявки, тъй като позволява получаване само на необходимите полета в една заявка. Rate limit за REST API — 5000 заявки на час за удостоверени потребители. API се използва широко за интеграция на GitHub с външни CI системи и вътрешни DevOps инструменти.
GitHub Gist — услуга за публикуване на фрагменти от код без създаване на пълно хранилище. Gist поддържа оцветяване на синтаксиса, вграждане във външни сайтове и история на версиите. Всеки Gist може да бъде публичен (видим в търсенето) или таен (достъпен само чрез връзка). Gist се използва за бърз споделяне на конфигурации, логове и примери за код в екипната комуникация, както и като аналог на Pastebin за разработчици.
Често задавани въпроси
GitHub набляга на отворената общност и социалните функции (форкове, звезди). GitLab предлага по-мощен вграден CI/CD и собствен хостинг (Self-Managed) без ограничения на минутите за Actions.
GitHub Team струва 4 долара на потребител на месец и предоставя неограничени частни хранилища, защита на клонове и Actions (3000 минути). Безплатният тариф е подходящ за малки open-source проекти.
При създаване на хранилище изберете Private вместо Public. В частните хранилища кодът се вижда само от поканените участници. На безплатния тариф частните хранилища са достъпни с ограничение до 3 сътрудници.
GitHub Copilot — AI асистент, базиран на OpenAI Codex, който предлага автоматично довършване на код в реално време. Работи в VS Code, JetBrains и Neovim, поддържа всички популярни езици за програмиране.
Отидете на Settings → Danger Zone → Delete this repository. Изтриването е необратимо — всички commit-и, Issues и Wiki ще бъдат изтрити без възможност за възстановяване. Предварително се уверете, че имате резервно копие.
Резюме
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също