버전 관리 시스템(VCS)
은 파일의 변경 사항(giff)을 시간순으로 추적하여 관리한다.Git
은 파일을 저장할 때 파일의 변경사항이 아니라 해당 시점의 스냅샷을 저장한다. 이는 파일이 변경되더라도 변경된 부분만 저장하는 것이 아니라 전체 파일의 상태를 저장한다.Git은 세 가지 주요 구성 요소를 가지고 있다.
Working Directory (WD)
: 작업 중인 실제 파일이 존재하는 디렉토리Staging Area
: Commit에 포함될 변경 사항을 준비하는 영역Git Directory
: Git의 메타 데이터와 객체 데이터베이스가 저장되는 디렉토리Git에서 파일은 Untracked
와 Tracked
상태로 나뉜다.
Untracked 상태
: Git에서 이 파일을 관리 대상으로 인지하지 않는 상태로, 초기에 파일을 생성하고 Git에 등록하지 않은 상태이다.
Tracked 상태
:
Staged
: 변경된 파일을 Staging한 상태로, commit을 수행하기 전에 Staging Area에 추가되어 있는 상태이다.Commited (Unmodified)
: 파일이 최근에 commit된 이후 수정되지 않은 상태이다.Modified (Unstaged)
: 파일이 수정되어 commit되지 않은 변경 사항이 있는 상태이다.Git은 파일 목록을 따로 관리하기에 Working Directory에서 파일을 삭제해도 실제로는 지워지지 않는다.
따라서 Working Directory에서 파일을 삭제하면 Git의 관리 목록에서도 해당 파일이 삭제된다. Git은 Working Directory와 Staging Area, 그리고 Repository 간의 상태를 추적하여 변경 사항을 관리하기 때문에, 파일이 삭제되면 Git에서도 해당 파일을 삭제한 것으로 간주하게 된다.
1) Working Directory(WD)
에서 파일을 수정한다.
2) 수정된 파일을 Commit할 파일을 Staging Area (Index)
에 추가합니다. 이는 변경 사항을 스냅샷으로 포장하기 위한 준비 단계로, Git에게 이 파일들이 다음 Commit에 포함되어야 함을 알려준다.
3) Staging Area (Index)에 있는 파일들을 Commit하여 .git Directory (Repository)
에 스냅샷을 저장한다. Commit은 해당 시점의 변경 사항을 저장하는 것으로, 이를 통해 버전 관리가 이루어진다.
Git을 공부 중이기에 Graphical User Interface (GUI)보다는 Command Line Interface (CLI)
를 통해 Git 명령어를 직접 입력하고 실행함으로써 Git의 작동 원리를 더 잘 이해하고, 명령어의 다양한 옵션과 기능을 익힐 수 있다.