Git에 대해 학습한 내용을 정리하는 포스팅입니다.
출처에서 더 자세한 내용을 확인할 수 있습니다.
📍 MacOS 기준으로 작성되어있습니다.
Git은 데이터를 스냅샷의 스트림처럼 취급한다.
Git과 subversion, perforce와 같은 다른 VCS와의 가장 큰 차이점은 데이터를 다루는 방법입니다. 다른 VCS는 각 파일의 변화를 시간순으로 관리합니다.
그러나 Git은 데이터를 파일 시스템 스냅샷의 연속으로 취급합니다.
커밋하거나 프로젝트의 상태를 저장할 때마다 파일이 존재하는 그 순간을 중요하게 여기는 것입니다.
따라서, 파일이 달라지지 않았으면 Git은 파일을 새로 저장하지 않고 이전 상태의 파일에 대한 링크만 저장합니다.
Git은 파일을 Committed, Modified, Staged 세 가지 상태로 관리한다.
- Committed: 데이터가 로컬 데이터베이스에 저장됨
- Modified: 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않음
- Staged: 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태
위 상태들은 Git 프로젝트의 세 가지 단계와 연결되어 있습니다.
Git은 디렉토리, 워킹 트리, Staging Area 이렇게 세 가지 단계로 나뉘어진다.
- Git 디렉토리: Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳
- 워킹 트리: 프로젝트의 특정 버전을 Checkout 한 것
- Staging Area: Git 디렉토리에서 곧 커밋할 파일에 대한 정보를 저장하는 곳
Git의 단계와 상태를 작업 단계 별로 확인해보면 아래와 같습니다
단계: 워킹 트리
상태: Modified
단계: Staging Area
상태: Staged
git command : git add
단계: Git 디렉토리
상태: Committed
git command : git commit