
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 협업 흐름 예시
- 원격 저장소(Organization, 팀 Repo) 생성
- 멤버별로 Fork 후, Clone
- 기능 개발 등을 위한 이슈 파기
- 각자 브랜치를 생성하여 기능 개발
- PR(Pull Request) 생성
- 코드 리뷰/토론 후 병합
- 병합된 내용은 다시 Pull로 동기화
참고자료
'CS' 카테고리의 다른 글
| 프로세스 메모리 관리 모델과 가상 메모리 구조 (6) | 2025.07.17 |
|---|---|
| 파서(Parser)란? (0) | 2025.07.17 |
| JSON과 XML: 웹 데이터 교환 방식 비교 분석 (1) | 2025.07.16 |
| 리눅스(Linux)란 무엇인가? (0) | 2025.07.16 |