분산 버전 관리 시스템으로, 소프트웨어 개발 프로젝트의 협업, 변경 이력 추적, 코드 관리를 가능하게 하는 도구
특징
- 거의 모든 명령을 로컬에서 실행
- 네트워크에 영향 x
- 무결성
- 데이터를 저장하기 전 항상 체크섬으로 관리
- 해시를 사용하여 체크섬 만듬
- Git은 파일 이름이 아닌 해당 파일의 해시를 저장
- 데이터를 추가할 뿐
- Git으로 무엇을 하든 데이터베이스에 데이터가 추가됨
- 물론 커밋하지 않는다면 데이터를 잃어버릴 수 있지만 스냅샷을 커밋했다면 잃어버리지 않음
3가지 상태
1. Working Directory
- 현재 작업 중인 프로젝트 폴더
- 파일을 생성, 수정, 삭제 등의 작업을 수행
- Working Directory 안에 파일은 Untracked File (add 하면 Tracked File로 변환)
- Staging Area
- 변경 사항을 커밋 전에 검토하고 선택적으로 포함하도록 도와줌
- Working Directory에서 변경한 파일 중 어떤 파일을 커밋에 포함할지 선택하는 중간 단계
- .git directory (Repository)
- commit된 변경 내역, branch, tag 등의 정보가 저장됨
- Working Directory와 Staging Area의 상태를 기록하며, 변경 내용을 영구적으로 보존
요약
Working Directory-- add -->Staging Area-- commit -->.git directory(Repository)
출처
https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Git-%EA%B8%B0%EC%B4%88