Git은 2005년 리눅스 커널의 개발을 위해서 만들게 된, 가장 대표적인 코드 형상관리 도구 중 하나이다. 한 마디로, 코드의 버전 관리 를 쉽게 해주는 녀석이다.

→ 형상관리 도구란?

: 버전을 관리해주는 툴이다.

 PPT를 제작할 때 `PPT_진짜최종.PPTX` 또는 `PPT_진짜최최종.PPTX` 식으로 
 저장해 본 경험이 한 번쯤은 있을 것이다. 

 이런 표식들과 마찬가지로 ***이 코드가 현재 어느 버전에 있는지*** 나타내기 위해 사용하는 도구이다.
 
 새로운 기능을 추가해서 배포했는데 문제가 생긴 경우,
 쉽고 빠르게 이전 버전의 코드로 되돌리기를 하는 것이다. 

→ Git은 데이터베이스다?

 : key - vaule 스토리지를 가지고 있다.
   해시 기능을 통해 파일의 콘텐츠를 전달하여
   고유 키인 콘텐츠 주소를 생성하는 방식이다.

   커밋을 예로 들어보면, 
   커밋을 만들 때 프로젝트 내용의 해시값이 key, 
   프로젝트 파일의 내용이 vaule로 저장된다.

Untitled

$ git log 명령어를 사용해서 자세히 확인하면 커밋 해시값을 볼 수 있다. 이 해시값을 키로 조회해 보면 트리 해시값과 메타데이터가 저장되어 있고

Untitled

Untitled

트리 해시값을 키로 조회해보면, 블롭 해시값과 파일명이 value로 저장되어 있고 블롭 해시값을 키로 조회해보면 파일 내용이 저장

✔︎ 아래 잘 정리되어 있는 글 참고해서 읽어보자.

https://maintainhoon.vercel.app/blog/post/git_internal_behavior

Git의 기능