본문 바로가기
Git

[Git] Git 기초

by devfactory 2024. 9. 28.

차이가 아니라 스냅샷

subversion과 이와 비슷한 VCS들과 Git의 가장 큰 차이는 데이터를 다루는 방법이다.

큰 틀에서 보면 VCS대부분은 관리하는 정보가 파일의 목록이다.

CSV, Subversion 등의 시스템은 각 파일의 변화를 시간순으로 관리하여 파일의 집합을 관리한다.

각 파일에 대한 변화를 저장하는 시스템


Git은 이런 방법으로 데이터를 저장, 취급하지 않는다.

Git은 데이터를 파일 시스템, 스냅샷으로 취급하고 크기가 매우 작다.

Git은 커밋하거나 프로젝트의 상태를 저장할 때마다 파일이 존재하는 그 순간을 중요하게 여긴다.

파일이 달라지지 않았다면 성능을 위해 파일을 새로 저장하지 않는다 대신 이전 상태의 파일에 대한 링크만 저장한다.

 

시간순으로 프로젝트의 스냅샷을 저장

 

이것이 Git이 다른 VCS와 구분되는 점이다.

 

거의 모든 명령을 로컬에서 실행

거의 모든 명령이 로컬 파일과 데이터만 사용하기에 네트워크에 있는 다른 컴퓨터가 필요 없으며 네트워크 속도에 영향을 받지 않는다. 프로젝트의 모든 히스토리가 로컬디스크에 있어 모든 명령을 순식간에 실행한다.

 

Git의 무결성

Git은 데이터를 저장하기 전 항상 체크섬을 구하고 그 체크섬으로 데이터를 관리한다.

그래서 체크섬 없이는 어떠한 파일이나 디렉터리도 변경할 수 없다.

 

Git 없이는 체크섬을 다룰 수 없어 파일의 상태를 알 수도 없고 데이터를 잃어버릴 수도 있다.

Git은 SHA-1 해시를 사용하여 체크섬을 만든다 만든 체크섬은 40자 길이의 16진수 문자열이다.

SHA-1의 예
d7bc6fab79c8b62655305a17730ef6938fe15f76

 

Git은 파일의 내용이나 디렉터리 구조를 이용하여 체크섬을 구한다.

Git은 모든 것을 해시로 식별하며 실제로 파일을 이름이 아닌 해당 파일의 해시로 저장한다.

 

Git은 데이터를 추가할 뿐

Git으로 무엇을 하든 GitDB에 데이터가 추가된다. 되돌리거나 데이터를 삭제할 방법이 없다.

반응형

'Git' 카테고리의 다른 글

[Git] Git 기초 (init, clon, status, log, add, commit)  (0) 2024.09.30
[Git] 저장소 만들기  (0) 2024.09.30
[Git] 도움말 보기  (1) 2024.09.30
[Git] 최초 설정  (1) 2024.09.30
[Git] 파일의 상태  (1) 2024.09.30