본문 바로가기
CS

git vs GitHub

by Jiyoung Oh 2025. 7. 15.

git이란?

git(Global Information Tracker)은 파일의 변경 이력을 추적하고, 이전 상태로 되돌리거나 협업 중 충돌을 해결할 수 있게 해주는 버전 관리 시스템(VCS) 입니다.

분산형 버전 관리 시스템(DVCS, Distributed Version Control System)

  • 모든 개발자는 자신의 PC에 전체 프로젝트의 변경 이력을 로컬 저장소로 갖고 있음
  • 중앙 서버가 없어도 각자가 독립적으로 버전 관리 및 복구 가능

git 동작 구조

  • Working Directory(작업 디렉토리): 실제 개발자가 작업하는 파일/폴더 공간
  • Staging Area(스테이징): 커밋 전, 기록할 변경 사항을 잠시 모아두는 곳
  • Repository(로컬 저장소): 커밋한 모든 변경 이력이 저장되는 공간
  • Remote(원격 저장소): GitHub 등 서버에 저장된 중앙 저장소
파일 수정 → [add] → 스테이징 → [commit] → 로컬 저장소 → [push] → 원격 저장소

주요 git 명령어

  • git init : 새 저장소 생성 (로컬에서)
  • git clone <url> : 원격 저장소 복제
  • git status : 변경된 파일 상태 확인
  • git add <파일명> : 변경된 파일을 스테이징 영역에 추가
  • git commit -m "메시지" : 변경 내역 커밋(로컬 저장소에 기록)
  • git push : 커밋을 원격 저장소로 업로드
  • git pull : 원격 저장소의 변경 내역을 내려받아 합치기
  • git branch : 브랜치 목록/생성/이동
  • git merge <브랜치명> : 다른 브랜치의 변경 내역을 현재 브랜치로 병합

git 활용

  • 백업과 복구: 실수로 삭제/수정해도 이전 커밋 상태로 되돌리기 가능
  • 협업: 여러 개발자가 동시에 같은 파일을 다뤄도, 충돌을 관리하고 조정할 수 있음
  • 이슈 추적: 어떤 버전에서 버그가 발생했는지 추적 가능(커밋 해시/로그 활용)

브랜치 전략

  • Git Flow
    • main: 배포용(운영)
    • develop: 개발 통합
    • feature/bugfix: 새로운 기능, 버그 수정(단기 브랜치)
    • release: 배포 준비
    • hotfix: 운영 중 긴급 수정
  • GitHub Flow
    • main와 feature 브랜치만 사용, PR로 병합

git 커밋 메시지 컨벤션

  • 나중에 변경 이력 추적, 배포 기록, 코드 리뷰 시 한눈에 이해 가능
  • 구조 예시
  • [타입]: [간결한 설명] 예) feat: 로그인 API 구현

git에서 자주 발생하는 문제와 해결법

  • 충돌(conflict):
    • 동일한 파일의 동일 부분을 여러 명이 수정한 경우 발생
    • 해결: 충돌 부분 직접 편집 후, add → commit
  • 오류 커밋 취소
    • git reset --soft HEAD^ (최근 커밋 취소, 내용 보존)
    • git revert <커밋 해시> (특정 커밋만 되돌림)

GitHub란?

GitHub는 git을 기반으로 한 코드 공유 플랫폼입니다. 원격 저장소를 만들고, 여러 개발자가 함께 프로젝트를 관리할 수 있습니다.

GitHub의 역할과 특징

  • 원격 저장소 서비스: 인터넷 상에서 git 저장소를 관리
  • 협업 지원: 여러 명이 하나의 프로젝트에 참여
  • 프로젝트 관리: Issue, Project Board, Wiki, PR 등 다양한 협업 도구 제공
  • 오픈소스 중심지: 수많은 오픈소스 프로젝트와 커뮤니티 존재

GitHub 실무 활용

  • Pull Request(풀리퀘, PR)
    • 코드 변경 제안 → 리뷰 → 승인/수정 → 병합
    • 모든 커밋 내역, 코드 변경 내역, 토론 기록이 남아 추적 가능
  • Issue: 버그/기능 요청/작업 관리 등 모든 커뮤니케이션의 시작점
  • Actions: CI/CD(자동 빌드/테스트/배포) 파이프라인을 코드로 관리
  • Projects: 칸반보드로 이슈/작업 시각적 관리
  • Wiki/Discussions: 문서화 및 자유로운 논의 공간 제공

GitHub 협업 흐름 예시

  1. 원격 저장소(Organization, 팀 Repo) 생성
  2. 멤버별로 Fork 후, Clone
  3. 기능 개발 등을 위한 이슈 파기
  4. 각자 브랜치를 생성하여 기능 개발
  5. PR(Pull Request) 생성
  6. 코드 리뷰/토론 후 병합
  7. 병합된 내용은 다시 Pull로 동기화

참고자료