Git 이란?
Git이란 컴퓨터 파일의 변경사항을 추적하고 관리하는 분산형 버전 관리 시스템(DVCS, Distributed Version Control System) 입니다.
Git 개념
Git은 파일을 아래 세 가지 상태로 관리합니다.
- Commited - 데이터가 로컬 데이터베이스에 저장된 상태
- Modified - 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 상태
- Staged - 수정한 파일을 곧 커밋할 것이라고 표시한 상태
이 세 가지 상태는 Git 프로젝트의 세 가지 단계와 연결돼 있습니다.
- Working 디렉터리(Working tree라고도 함)는 프로젝트의 특정 버전을 git 디렉터리에서 Checkout 한 것입니다. Checkout 하고 나서 수정한 파일은 Modified 상태로 있게 됩니다.
- Staging Area는 Staged 상태인 파일들이 저장되어 있습니다.
- Git 디렉터리는 Commited 상태인 파일들이 저장되어 있습니다.
Git으로 하는 일은 기본적으로 아래와 같습니다.
- Working 디렉터리에서 파일을 수정합니다.
- Staging Area에 수정된 파일을 추가합니다. (git add ..)
- Staging Area에 있는 파일들을 커밋해서 Git 디렉터리에 영구적인 스냅샷으로 저장합니다. (git commit ..)
다른 VCS와 Git의 차이점
Git은 다른 VCS와 데이터를 다루는 방법이 다릅니다.
CVS, Subversion 등의 VCS는 각 파일의 변화를 시간순으로 관리합니다.
대신 Git은 데이터를 스냅샷의 스트림처럼 취급합니다. 즉, 개별 파일의 변경사항을 호출하는 대신 스냅샷을 호출하여 언제든지 전체 프로젝트 및 파일 상태를 가져올 수 있습니다.
Git은 커밋하거나 상태를 저장할 때마다 성능을 위해 달라지지 않은 파일은 새로 저장하지 않습니다.
Git의 장점
- Git은 거의 모든 명령을 로컬에서 실행하기 때문에 다른 네트워크 속도에 영향을 받는 CVCS보다 훨씬 빠릅니다.
- 네트워크에 접속하지 않아도 작업이 가능합니다.
- 브랜치를 통해 여러 명이 동시에 작업하는 병렬 개발이 가능합니다.