Git의 내부
Object
1. Blob (Binary Large Object)
- Blob Object란 실제 파일을 뜻하며, 실제 소스파일을 가지고 있는 실세 오브젝트같은 느낌
- 단지 파일 내용만 저장한 개체
- 파일은 meta data(ex.생성일)를 포함함
- 파일모드
- 100644: 보통의 파일
- 100755: 실행파일
- 120000: 심볼릭 링크
2. Tree Object
- Tree Object 내부에는 프로젝트 구조의 각 디렉토리에 대한 정보
- 하위에 어떤 폴더와 파일을 가지고 있는지 알려주고, 객체 해쉬 값을 저장
- 이 Tree Object의 제일 상위 객체는 root이며, 프로젝트의 최상위 폴더에 대한 정보를 담게 됩니다.
- Tree 개체 하나는 항목을 여러 개 가질 수 있다.
- 그 항목에는 Blob 개체나 하위 Tree 개체를 가리키는 SHA-1 포인터, 파일 모드, 개체 타입, 파일 이름이 들어 있다.
git write-tree
:
- Staging Area를 Tree 개체로 저장
update-index
- 파일을 인위적으로 Staging Area에 추가
commit-tree
- 커밋 객체 생성
3. Commit Object
- 커밋 시점의 Repository Root Directory의 해쉬 값을 가지고 있는 녀석입니다
- Parent는 내 커밋 전에 커밋이 누구인지를 뜻하는데요. 또한, 커밋할 때의 committer(user), commit message등의 정보도 가지고 있습니다.
Index
#git index를 좀 더 자세히 - ‘Why Should I Care about the Index?’를 보고
- Working Directory 에서 Repository로 정보가 저장되기 전 준비 영역
- 파일 상태를 기록, 스테이징 한다고도 표현함, Staging Area로 불리기도함
.git/index
파일로 관리됨.git add
명령어로 Working Directory 에서 Index 영역으로 정보가 저장됨git commit
명령어로 Index 영역에서 Repository로 정보가 저장됨git ls-files
: index 내용을 볼 수 있다
git hash algorithm - sha256
SHA란 무엇인가요?
보안 해시 알고리즘의 약자인 SHA는 특정 데이터의 무결성을 확인하는 데 사용되는 암호화 해시 알고리즘입니다.
이 알고리즘은 웹사이트의 데이터가 수정되거나 변조되지 않도록 하는 데 도움이 됩니다. 특정 파일/파일의 변형에서 고유한 해시값을 생성하여 이를 수행합니다. 이러한 해시값을 기반으로 예상 해시값과 수신된 해시값을 비교하여 파일이 변경되었는지 여부를 확인할 수 있습니다
- git sha256 사용
https://www.youtube.com/watch?v=MyvyqdQ3OjI&ab_channel=Brief
Refs
728x90
'git' 카테고리의 다른 글
mark down 목차 이동 만들기 (0) | 2023.09.12 |
---|---|
git switch VS git checkout (0) | 2023.09.05 |