GitHub는 Microsoft 소유의 Git 리포지토리 호스팅, 협업 개발 및 프로세스 자동화를 위한 가장 큰 웹 플랫폼입니다. 버전 관리된 코드 저장소뿐만 아니라 프로젝트 관리를 위한 완벽한 도구 세트를 제공합니다: Issue Tracking, 코드 리뷰가 포함된 Pull Request, CI/CD를 위한 Actions, 문서화를 위한 Wiki 등입니다. GitHub, 2024년에 따르면, 플랫폼에는 1억 명 이상의 개발자와 4억 2천만 개의 리포지토리가 있습니다.
핵심 포인트
GitHub는 Git 리포지토리에서 저장 및 협업을 위한 웹 서비스로, 2008년 Tom Preston-Werner, Chris Wanstrath 및 PJ Hyett에 의해 설립되었습니다. 2018년에 Microsoft가 75억 달러에 인수했습니다. 이 플랫폼은 모든 Git 작업을 위한 웹 인터페이스를 제공하며, 그 위에 포크, 별, 구독, 코드 리뷰 및 내장 지속적 통합 시스템과 같은 소셜 기능을 추가합니다.
GitHub와 경쟁사 간의 주요 차이점은 개방형 생태계와 가장 큰 개발자 커뮤니티입니다. GitHub는 Android, Kubernetes, React, Swift, Kotlin 및 수천 개의 다른 오픈 소스 프로젝트의 소스 코드를 호스팅합니다. 이는 플랫폼을 단순한 코드 저장 도구가 아니라 개발자를 위한 소셜 네트워크로 만듭니다: 프로젝트를 팔로우하고, 변경 사항에 대해 논의하고, pull request를 통해 기여할 수 있습니다.
Microsoft 보고서(2024년)에 따르면, 매일 1천만 개 이상의 새로운 Pull Request가 GitHub를 통과하며, 월간 활성 사용자 수는 1억 명을 넘었습니다. 이 플랫폼은 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 인증, 감사 로깅, 리포지토리 보안 정책 및 99.95% 가용성 SLA가 포함됩니다. Enterprise 버전은 Google, Apple 및 Airbnb와 같은 기업에서 사용합니다.
GitHub의 중요한 기능은 GitHub CLI(gh)로, 웹 인터페이스 없이 명령줄에서 모든 플랫폼 작업을 수행할 수 있습니다. gh를 사용하면 리포지토리 생성, Issues 관리, Pull Request 검토 및 Actions 실행을 터미널에서 직접 수행할 수 있으며, 이는 명령줄에 익숙한 개발자의 작업 속도를 높입니다.
| 기능 | 목적 | 이용 가능 |
|---|---|---|
| Actions | CI/CD 및 자동화 | 무료 2000분/월 |
| Codespaces | VS Code 기반 클라우드 IDE | 유료, 60시간/월 무료 |
| Packages | 패키지 및 Docker 이미지 호스팅 | 무료 500 MB |
| Dependabot | 자동 종속성 업데이트 | 공개 리포지토리 무료 |
| Pages | 정적 사이트 호스팅 | 무료 |
Pull Request(PR)는 GitHub 프로젝트에 변경 사항을 적용하는 주요 메커니즘입니다. 개발자가 변경 사항이 포함된 브랜치를 만들고, GitHub에 게시한 후 메인 브랜치로 병합 요청(Pull Request)을 보냅니다. 프로젝트의 다른 참가자는 브랜치 간의 차이(diff)를 확인하고, 특정 코드 줄에 댓글을 남기고, 변경을 제안하고, 요청을 승인 또는 거부할 수 있습니다.
GitHub의 코드 리뷰 프로세스는 PR을 중심으로 구축됩니다. 각 댓글은 diff의 특정 줄에 첨부되며 세 가지 유형이 있습니다: Comment(일반 댓글), Request Changes(수정 필요), Approve(승인). 변경 후 작성자는 새 커밋으로 PR을 업데이트하고 리뷰 프로세스가 반복됩니다. 모든 문제가 해결되고 PR이 승인되면 변경 사항이 대상 브랜치에 병합됩니다.
# 기능 브랜치 생성 및 푸시
git checkout -b fix-login-bug
git add src/
git commit -m "Fix login validation error"
git push -u origin fix-login-bug
# CLI를 통한 PR 생성
gh pr create --base main --title "Fix login validation" \
--body "Fixed edge case with empty email field"
# PR 보기 및 병합
gh pr review --approve fix-login-bug
gh pr merge --squash fix-login-bug
GitHub는 브랜치 보호 규칙을 지원합니다: main에 직접 푸시를 금지하고, 병합 전에 필수 승인 수를 요구하고, Actions 검사를 실행하고, 병합 전에 브랜치를 최신 상태로 유지하도록 요구할 수 있습니다. 브랜치 보호는 Settings → Branches에서 구성되며 프로덕션 프로젝트의 필수 관행으로, 메인 브랜치에 불안정한 코드가 실수로 도입되는 것을 방지합니다.
GitHub Actions는 리포지토리 내에서 직접 워크플로를 자동화할 수 있는 내장 CI/CD 플랫폼입니다. 워크플로는 .github/workflows/ 디렉토리에 있는 YAML 파일로 설명됩니다. 각 워크플로는 러너(Linux, Windows 또는 macOS 가상 머신)에서 실행되는 하나 이상의 작업으로 구성됩니다.
Actions는 이벤트 기반 모델을 지원합니다: 워크플로는 푸시, PR 생성, 릴리스 게시, 일정 또는 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 생태계에는 GitHub Marketplace에 20,000개 이상의 기성 액션이 포함되어 있습니다. 인기 액션: checkout(리포지토리 복제), setup-java/setup-node/setup-python(환경 설정), upload-artifact(빌드 아티팩트 저장), cache(속도 향상을 위한 종속성 캐싱), slack-notify(Slack에 알림 전송). Actions는 매트릭스 빌드도 지원합니다 — 여러 OS 또는 언어 버전에서 동시 실행.
Issues는 GitHub의 내장 작업 추적 시스템입니다. 각 Issue에는 제목, 설명, 레이블, 담당자, 마일스톤 및 연결된 Pull Request가 있습니다. Issues는 템플릿화할 수 있습니다 — 버그 리포트, 기능 요청 또는 질문에 대해 다른 템플릿이 사용되며, 생성 시 자동으로 삽입됩니다.
GitHub Projects(이전 Projects Beta)는 Jira 및 Trello와 유사한 보드 기반 프로젝트 관리 도구입니다. Projects는 사용자 정의 필드(상태, 우선순위, 스프린트), Issues 및 Pull Request와의 연결, 작업 상태 변경 시 카드 이동 자동화 및 번다운 차트 형태의 분석을 지원합니다. Projects는 두 가지 모드로 사용 가능합니다: Table(테이블 보기) 및 Board(칸반 보드).
릴리스 관리를 위해 GitHub는 Milestones를 제공합니다 — 마감일이 있는 공통 목표로 연결된 Issues 및 PR 그룹입니다. 각 마일스톤은 진행 상황을 보여줍니다: 열린 작업 수, 닫힌 작업 수, 마감일 준수 여부. 마일스톤은 Releases와 통합됩니다 — 릴리스를 게시할 때 마일스톤에 연결하고 닫힌 Issues를 기반으로 자동으로 CHANGELOG를 생성할 수 있습니다.
GitHub Pages는 https://username.github.io/repository에서 리포지토리 콘텐츠를 자동으로 게시하는 정적 사이트를 위한 무료 호스팅입니다. Pages는 HTML, CSS, JavaScript 및 정적 생성기: Jekyll(내장), Hugo, Next.js(내보내기) 및 MkDocs를 지원합니다. 구성에는 게시용 브랜치 및 디렉토리 선택과 사용자 정의 도메인 지원이 포함됩니다.
기술 문서를 위해 GitHub는 Wiki를 제공합니다 — Git 리포지토리로도 저장되는 내장 위키 시스템입니다. Wiki는 Markdown을 지원하며 웹 인터페이스를 통해 또는 로컬에서 위키 리포지토리로 푸시하여 페이지를 편집할 수 있습니다. 각 Wiki 페이지에는 자체 변경 기록이 있어 API, 아키텍처 및 프로젝트 프로세스 문서화에 편리합니다.
GitHub Pages + Jekyll 조합은 문서 사이트를 위한 인기 있는 솔루션입니다. Jekyll은 Markdown 파일을 자동으로 정적 HTML 페이지로 변환하고, 테마, 탐색 및 검색을 지원합니다. 예를 들어, Android Developers 문서는 이전에 GitHub Pages에서 Jekyll을 사용했으며, 현재는 내부 플랫폼을 사용하지만 수천 개의 오픈 소스 프로젝트가 계속해서 이 조합을 사이트에 사용하고 있습니다.
GitHub CLI(gh)를 사용하면 명령줄을 통해 모든 플랫폼 작업을 수행할 수 있습니다: 리포지토리 생성, Issues 관리, Pull Request 확인 및 승인, Actions 실행. gh repo create my-project --public 명령은 원격 리포지토리를 생성하고 로컬과 연결하며, gh pr create는 현재 브랜치에서 Pull Request를 생성합니다. CLI는 웹 인터페이스보다 터미널을 선호하는 개발자의 작업 속도를 높입니다.
GitHub REST API 및 GraphQL API는 모든 플랫폼 기능에 대한 프로그래밍 방식 액세스를 제공합니다: Issues 생성, 사용자 관리, 통계 가져오기 및 Actions 관리. GraphQL API는 복잡한 쿼리에 적합하며 단일 요청으로 필요한 필드만 가져올 수 있습니다. REST API의 속도 제한은 인증된 사용자의 경우 시간당 5000 요청입니다. API는 GitHub를 외부 CI 시스템 및 내부 DevOps 도구와 통합하는 데 널리 사용됩니다.
GitHub Gist는 전체 리포지토리를 만들지 않고 코드 스니펫을 게시하는 서비스입니다. Gist는 구문 강조, 외부 사이트 임베딩 및 버전 기록을 지원합니다. 각 Gist는 공개(검색에서 표시) 또는 비밀(링크로만 액세스 가능)일 수 있습니다. Gist는 팀 커뮤니케이션에서 설정, 로그 및 코드 예제를 빠르게 공유하고 개발자를 위한 Pastebin 대안으로 사용됩니다.
자주 묻는 질문
GitHub는 오픈 커뮤니티와 소셜 기능(포크, 별)에 중점을 둡니다. GitLab은 더 강력한 내장 CI/CD와 Actions 시간 제한 없는 자체 관리 호스팅을 제공합니다.
GitHub Team은 사용자당 월 4달러이며 무제한 비공개 리포지토리, 브랜치 보호 및 Actions(3000분)를 제공합니다. 무료 플랜은 소규모 오픈 소스 프로젝트에 적합합니다.
리포지토리 생성 시 Public 대신 Private을 선택합니다. 비공개 리포지토리에서는 초대된 협력자만 코드를 볼 수 있습니다. 무료 플랜에서는 최대 3명의 협력자로 제한된 비공개 리포지토리를 사용할 수 있습니다.
GitHub Copilot은 OpenAI Codex 기반 AI 어시스턴트로 실시간 코드 자동 완성을 제공합니다. VS Code, JetBrains 및 Neovim에서 작동하며 모든 주요 프로그래밍 언어를 지원합니다.
Settings → Danger Zone → Delete this repository로 이동합니다. 삭제는 되돌릴 수 없습니다 — 모든 커밋, Issues 및 Wiki가 복구 가능성 없이 삭제됩니다. 미리 백업이 있는지 확인하세요.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.