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 новим комитом и процес прегледа се понавља. Када су све примедбе отклоњене и 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 и обавезна је пракса за production пројекте, спречавајући случајно уношење нестабилног кода у главну грану.
GitHub Actions — је уграђена CI/CD платформа која омогућава аутоматизацију токова рада директно у репозиторијуму. Workflow се описује у YAML датотекама, смештеним у директоријуму .github/workflows/. Сваки workflow се састоји од једног или више job-ова, који се извршавају на runner-има — виртуелним машинама са Linux, Windows или macOS.
Actions подржава модел вођен догађајима: workflow се покреће при push-у, креирању PR-а, објављивању release-а, по распореду или путем webhook-а. Ово омогућава аутоматизацију изградње, покретање тестова, статичку анализу кода, објављивање у продавницама апликација и имплементацију на сервер без учешћа програмера. Испод је пример workflow-а за 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 — групе Issue-а и PR-ова, обједињене заједничким циљем са роком. Свака прекретница показује напредак извршења: колико је задатака отворено, колико затворено и да ли се рок поштује. Milestones се интегришу са Releases-има — при објављивању издања може се повезати са прекретницом и аутоматски генерисати листа промена у CHANGELOG-у на основу затворених Issue-а.
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. Брисање је неповратно — сви комитови, Issue-и и Wiki биће избрисани без могућности обнављања. Претходно се уверите да имате резервну копију.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође