Git/Git

[Git] Git 1 / 기본 개념

ui-o 2025. 9. 11. 13:00
반응형


버전 관리 시스템(VCS
(Version Control System)

  • 코드나 문서 같은 파일의 변경 이력을 관리하는 도구
  • VCS는 크게 로컬, 중앙집중식, 분산형으로 나눌 수 있음

분산형 VCS (Distributed VCS, Git)

  • 개념: 모든 개발자가 전체 히스토리(copy)를 로컬에 보관하고, 필요 시 서버와 동기화
  • : Git, Mercurial
  • 장점
    1. 오프라인 작업 가능 → 로컬에서 커밋, 브랜치, 병합 가능
    2. 안정성 → 로컬과 원격 서버 모두에 기록 존재
    3. 빠른 속도 → 대부분 작업이 로컬에서 이루어짐
    4. 유연한 브랜치 관리 → 브랜치 생성, 병합, 삭제가 자유로움
  • 단점: 서버와 연동 시 초기 설정과 동기화 필요

Git

  • 파일의 변경 이력을 기록하고, 협업 시 여러 사람이 동시에 작업할 수 있도록 도와주는 분산 버전 관리 시스템

Git의 장점

  1. 분산형 구조
    • 모든 개발자가 전체 히스토리를 로컬에 보유
    • 중앙 서버가 없어도 자유롭게 개발 가능
  2. 빠른 속도
    • 대부분 로컬에서 처리
    • 서버 통신 최소화
  3. 브랜치와 병합이 쉬움
    • 기능별, 버그 수정별 브랜치를 만들어 독립적으로 개발
    • 나중에 안전하게 통합 가능
  4. 데이터 무결성
    • Git은 SHA-1 해시로 각 커밋을 고유하게 관리
    • 변경 사항 위조나 손상 방지
  5. 협업 최적화
    • Fork, Pull Request 등 다양한 협업 워크플로 지원

Git 구조 

  • Git은 파일을 크게 세 영역에서 관리
  • 수정 → add → commit 이 3단계가 기본 흐름임
영역 설명 명령어
Working Directory 내 컴퓨터에서 실제로 수정하는 작업 폴더 (수정, 저장, 삭제 등 파일 작업)
Staging Area 커밋하기 전 임시 대기 공간 git add
Repository (Local Repo) 최종 버전이 저장되는 데이터베이스 git commit

커밋(Commit)

  • 커밋은 프로젝트의 스냅샷(snapshot) 을 저장하는 행위
  • "이 시점의 코드 상태를 기록해둔다"라고 생각하면 됨
  • 커밋 메시지 : 이 스냅샷의 설명 (무엇을 왜 바꿨는지)
  • 커밋 해시 : 고유 ID (Git이 내부적으로 부여하는 SHA 값)
  • 커밋 히스토리 : 이전 커밋과 연결되어 프로젝트의 "타임라인"을 만듦
  • 메시지를 의미 있게 작성해야 팀원이 히스토리 보고 쉽게 이해할 수 있음
    • ❌ git commit -m "수정"
    • ✅ git commit -m "회원가입 폼 검증 로직 추가"

브랜치(Branch)

  • 브랜치는 독립된 작업 공간
  • 하나의 타임라인에서 파생된 새로운 타임라인을 만든다
  • main(또는 master) 브랜치 → 항상 배포 가능한 상태 유지
  • 새로운 기능 추가, 버그 수정할 때는 feature 브랜치에서 작업
  • 완료 후 merge → main에 통합
  • 브랜치를 쓰면 동시에 여러 작업을 진행해도 main이 깨지지 않음

실무 예시

  • feature/login → 로그인 기능 개발
  • hotfix/typo → 급한 오타 수정

원격 저장소(Remote Repository)

  • 원격 저장소는 작업자가 공유하는 중앙 저장소
  • GitHub, GitLab, Bitbucket 같은 서비스를 사용
  • push → 로컬 저장소의 커밋을 원격으로 업로드
  • pull → 원격 저장소의 최신 커밋을 로컬로 가져오기
  • fetch → 원격 저장소의 커밋만 확인 (병합은 직접 해야 함)

📌 실무 흐름

  1. 작업자 새로운 기능을 개발하고 git push
  2. 다른 작업자는 git pull 해서 최신 코드로 동기화
  3. 충돌(conflict) 생기면 조율해서 병합 후 다시 push
반응형