Github
기본 정보
- 이름: GitHub
- 분류: Git 저장소 호스팅 플랫폼
- 개발사: GitHub, Inc. (Microsoft)
- 최초 공개: 2008년
- 주요 용도: 소스 코드 관리 및 협업
- 관련 주제: #GitHub #Git #OpenSource #DevOps #협업
개요
GitHub는 Git 기반의 원격 저장소(Repository) 호스팅 서비스이다.
개발자는 GitHub를 이용해 소스 코드를 저장하고 버전 관리를 수행하며, Pull Request(PR), Issue, Wiki, Actions 등의 기능을 통해 효율적으로 협업할 수 있다.
현재 전 세계에서 가장 많이 사용되는 개발 협업 플랫폼 중 하나이며, 오픈소스 프로젝트와 기업 프로젝트 모두에서 널리 활용되고 있다.
GitHub 구조
Developer
↓
Git
↓
Local Repository
↓
Push
↓
GitHub Repository
↓
Collaborator
동작 과정
코드 작성
↓
git add
↓
git commit
↓
git push
↓
GitHub 저장
↓
Pull Request
↓
Code Review
↓
Merge
주요 특징
- Git 저장소 호스팅
- 버전 관리
- 협업 지원
- Pull Request
- Issue 관리
- Wiki 제공
- GitHub Actions(CI/CD)
- 프로젝트 관리 기능
Repository
Repository(저장소)는 프로젝트의 코드와 이력을 저장하는 공간이다.
예시
my-project
portfolio
erp-system
flutter-app
Clone
원격 저장소를 복제한다.
git clone
https://github.com/user/project.git
Push
로컬 변경 사항을 GitHub에 업로드한다.
git push origin main
Pull
원격 저장소의 최신 변경 사항을 가져온다.
git pull origin main
Branch
기능별로 독립적인 작업 공간을 생성한다.
git switch -c
feature/login
Pull Request(PR)
브랜치에서 작업한 내용을 메인 브랜치에 병합하기 전에 검토를 요청하는 기능이다.
Feature Branch
↓
Push
↓
Pull Request
↓
Code Review
↓
Merge
Code Review
다른 개발자가 코드를 검토하는 과정이다.
주요 목적
- 코드 품질 향상
- 버그 예방
- 코드 스타일 통일
- 지식 공유
Merge
Pull Request 승인 후 브랜치를 병합한다.
feature/login
↓
main
Issue
프로젝트의 버그나 기능 요청을 관리하는 기능이다.
예시
#15
회원가입 오류 수정
Projects
칸반(Kanban) 형태로 프로젝트를 관리할 수 있다.
Todo
↓
In Progress
↓
Review
↓
Done
Wiki
프로젝트 문서를 관리하는 기능이다.
주요 내용
- 설치 방법
- API 문서
- 개발 가이드
- 사용 설명서
Releases
배포 버전을 관리하는 기능이다.
예시
v1.0.0
v1.1.0
v2.0.0
GitHub Actions
CI/CD 자동화를 위한 기능이다.
Push
↓
GitHub Actions
↓
Build
↓
Test
↓
Deploy
Workflow 예시
name: Build
on: push
jobs:
build:
runs-on: ubuntu-latest
자동 빌드 및 배포를 수행할 수 있다.
GitHub Pages
정적 웹사이트를 무료로 호스팅하는 기능이다.
대표 활용
- 포트폴리오
- 기술 블로그
- 프로젝트 문서
- 회사 소개 페이지
Fork
다른 사용자의 저장소를 자신의 계정으로 복사하는 기능이다.
Original Repository
↓
Fork
↓
My Repository
오픈소스 기여에 자주 사용된다.
Star
관심 있는 프로젝트를 즐겨찾기하는 기능이다.
Watch
저장소의 변경 사항을 알림으로 받을 수 있는 기능이다.
GitHub와 Git 차이
| Git | GitHub |
|---|---|
| 버전 관리 시스템 | Git 저장소 호스팅 서비스 |
| 로컬에서 사용 가능 | 클라우드 기반 |
| 코드 이력 관리 | 협업 기능 제공 |
| CLI 중심 | 웹 UI 제공 |
대표 활용 분야
- 오픈소스 프로젝트
- 기업 프로젝트
- 포트폴리오 관리
- DevOps
- AI 프로젝트
- 웹 개발
- 모바일 앱 개발
- 서버 개발
장점
- 무료 사용 가능(공개 저장소)
- 협업 기능 우수
- 버전 관리 지원
- CI/CD 제공
- 대규모 커뮤니티
- 오픈소스 생태계 활성화
단점
- Git 개념 학습 필요
- Merge Conflict 발생 가능
- 대용량 파일 관리에는 제한이 있음
- 비공개 저장소 정책에 따라 비용이 발생할 수 있음
실무 메모
실무에서는 다음과 같은 방식이 권장된다.
main브랜치는 직접 수정하지 않기- 기능별 브랜치 생성 후 Pull Request 사용
- Commit 메시지 규칙(Conventional Commits) 적용
- README.md 작성
.gitignore설정- Secret(API Key) 업로드 금지
- GitHub Actions를 활용한 자동 배포
- Code Review 필수 진행
- Issue와 Projects 연계 관리
- Release Tag를 활용한 버전 관리
GitHub와 함께 사용하는 기술
대표 기능
- Repository
- Branch
- Pull Request
- Issue
- Wiki
- Actions
- Projects
- Releases
- Discussions
- Security
관련 문서
출처
- GitHub 공식 홈페이지
- GitHub Docs
- Microsoft Learn