이전 포스트에서 설명했듯이 git은 분산 버전 관리 시스템입니다.
클라이언트가 단순히 파일의 마지막 스냅샷을 Checkout 하는 것이 아니라,
저장소를 버전의 히스토리와 더불어 전부 복제하여 사용합니다.
또한 Git은 GitHub와 같은 리모트 저장소를 통해서 다양한 협업이 가능합니다.
이번 포스트는 "ProGit" 책을 기준으로 작성하겠습니다.
Git 기초
Git은 다른 VCS와 인터페이스는 비슷하지만, 정보를 취급하는 방식이 다릅니다.
Git이 아닌 대부분의 VCS들은 각 파일의 변화를 시간순으로 관리하면서 파일들의 집합을 관리합니다.
Git은 데이터를 스냅샷의 스트림처럼 취급합니다.
파일이 달라지지 않았으면 파일을 새로 저장하지 않습니다. 단지 이전 상태의 파일에 대한 링크만 저장합니다.
이로 인해서 Git이 취급하는 데이터는 크기가 작아 Git의 성능이 좋습니다.
또한 Git은 거의 모든 명령을 로컬에서 실행하여 오프라인 상태에서도 가능합니다.
네트워크에 접속하지 않으므로 속도 또한 빠릅니다.
Git은 파일을 Committed, Modified, Staged 이렇게 세 가지 상태로 관리합니다.
- Committed란 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미합니다.
- Modified란 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것을 의미합니다.
- Staged란 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미합니다.
Git은 Working Directory, Staging Area, Git Directory 이렇게 세 가지 영역으로 분리됩니다.
- Working Directory는 사용자의 작업 공간입니다.
- Staging Area는 Git Directory 내부에 있으며, 곧 커밋할 파일에 대한 정보를 저장합니다.
기술용어로 Index라고도 합니다. - Git Directory는 Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳을 말합니다.
.git 폴더가 이것입니다.
Git에서는 기본적으로 다음과 같은 동작을 수행합니다.
- Working Directory에서 파일을 수정합니다.
- Staging Area에 파일을 Stage 해서 커밋할 스냅샷을 만듭니다.
수정된 모든 파일을 추가할 수도 있고, 선택할 수도 있습니다. - Staging Area에 있는 파일들을 커밋해서 Git Directory에 영구적인 스냅샷으로 저장합니다.
간단하게 파일의 상태로 정리해 봅시다.
- Git Directory에 있는 파일들은 Committed 상태입니다.
- 파일을 수정하고 Staging Area에 추가된 파일들은 Staged 상태입니다.
- Checkout을 하고 수정했지만, 아직 Staging Area에 추가하지 않았으면 Modified 상태입니다.
마무리
여기까지 간단하게 Git이 무엇이고 어떻게 동작하는지를 알아봤습니다.
Reference
https://git-scm.com/book/ko/v2
Git - Book
git-scm.com
https://m31phy.tistory.com/146
[GitHub] Working directory, stage, commit 내용 정리
아래의 내용들은 『Git 교과서』 내용을 개인적으로 정리한 내용들입니다. 1. Working Directory, Stage, and Repository 깃은 VCS의 특성 상 저장 공간을 논리적으로 분할한다. 깃에서는 저장 공간을 크게 3가
m31phy.tistory.com
'ETC' 카테고리의 다른 글
[Version Control System] VCS (0) | 2023.07.18 |
---|---|
[Internet] What is hosting? (0) | 2023.07.03 |
[Internet] DNS and how it works? (0) | 2023.07.01 |
[Internet] What is Domain Name (0) | 2023.06.29 |
[Internet] Browsers and how they work? (0) | 2023.06.27 |