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의 동작 원리
- 워킹 디렉토리에서 파일을 수정한다.
- Staging area에 파일을 Stage해서 Commit할 스냅샷을 만든다.
- 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.