Post

Git의 기본 개념

Git의 기본 개념

Git이란?

Git은 분산 버전 관리 시스템의 한 종류이다.
버전 관리 시스템(Version Control System - VCS)이란 파일의 변경 사항을 추적, 기록하고 특정 시점의 파일로 되돌릴 수 있는 시스템이다.
분산 버전 관리 시스템(Distributed Version Control System - DVCS)은 중앙 서버에 접속하지 않은 상태에서도 버전 관리를 할 수 있는 시스템이다.
단순히 파일의 마지막 스냅샷을 Checkout 하는 것이 아닌, 저장소와 그 작업 히스토리를 모두 복제하기 때문에, 서버에 문제가 발생하면 클라이언트로도 서버를 복원할 수 있다.


Git의 장점

  • 다수의 개발자가 로컬 저장소에서 개발한 뒤 원격 저장소에 Merge하는 방식으로 병렬적으로 개발 가능하다.
  • 히스토리 관리를 통해 버전 간 충돌 없이 체계적으로 개발 가능하다.

Git 기본 용어

  • Repository: 저장소를 의미
  • Remote Repository: 다른 작업자와 함께 공유하기 위한 저장소로 서버에 저장됨
  • Local Repository: 개인이 작업하기 위한 저장소로 개인 단말기에 저장됨
  • Git Directory (.git): Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳으로
  • Working Tree (Working Directory): 프로젝트의 특정 버전을 Checkout한 것으로 Git 디렉토리 안에 데이터베이스에서 파일들을 가져와 워킹 디렉토리가 만들어짐
  • Head: 현재 작업 중인 Branch
  • Branch: 작업할 때 특정 상태를 복사해서 별도의 작업을 하기 위해 나누는 분기점
  • Staging Area: 저장소에 commit할 스냅샷을 준비하는 위치

Git 기본 명령어

  • merge: 다른 Branch의 내용을 현재 Branch와 병합시키는 작업
  • commit: 변경된 작업 상태를 저장소에 저장하는 작업
  • switch: 작업할 다른 branch로 Head를 변경하는 작업
  • chechout: 특정 commit 시점으로 돌아가는 작업, Switch 작업도 포함
  • add: 워킹 디렉토리에서 Staging area로 등록하는 작업
  • push: 로컬 저장소에서 변경된 파일 및 히스토리를 원격 저장소에 반영시키는 작업
  • pull: 원격 저장소에서 변경 사항을 가져와 반영하는 작업
  • fetch: 원격 저장소에서 변경 사항을 가져오는 작업 (반영하지는 않음)
  • clone: 원격 저장소를 복제해 로컬 저장소에 저장하는 작업
  • branch: branch 목록 조회 및 branch 생성
  • log: commit 히스토리 조회
  • status: 워킹 디렉토리 상태 조회
  • init: Git repository를 생성

Git의 동작 원리

  1. 워킹 디렉토리에서 파일을 수정한다.
  2. Staging area에 파일을 Stage해서 Commit할 스냅샷을 만든다.
  3. Staging area에 있는 파일들을 Commit해서 로컬 저장소(Git directory)에 스냅샷을 저장한다.

Git의 파일 상태

  • Untracked: git의 관리 대상이 아닌 상태
  • Unmodified: commit 된 파일에서 변경사항이 없는 상태
  • Modified: commit 된 파일에서 변경사항이 발생해 Staging area에 올려야 하는 상태
  • Staged: commit으로 저장소에 기록할 예정인 상태

Git 호스팅 웹 서비스

웹을 통해 git 저장소 서버의 유지 및 관리를 용이하게 하는 서비스이다.
github, gitlab 등이 있으며, CI/CD 등을 위해 원하는 작업을 자동으로 수행해주는 github actions나 gitlab CI/CD 등의 강력한 기능들을 제공한다.


참조

This post is licensed under CC BY 4.0 by the author.