C:\Users\1\Desktop\gitfth>git status On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: f1.txt new file: f2.txt new file: f3.txt C:\Users\1\Desktop\gitfth>git commit -m "1" [master (root-commit) 23b0b92] 1 3 files changed, 3 insertions(+) create mode 100644 f1.txt create mode 100644 f2.txt create mode 100644 f3.txt C:\Users\1\Desktop\gitfth>git log commit 23b0b92c0494b77ced7cfa42e79e8501c1e1d11d (HEAD -> master) Author: ndy2 <emrdbs12@gmail.com> Date: Sun Mar 27 23:00:49 2022 +0900 1 C:\Users\1\Desktop\gitfth>
커밋도 파일 처럼 [objects]안에 관리됨
Commit
tree e42e333fda358xxxxxxxxxxxxxxxxxxxxx //<- authhor ndy2 <emrdbs12@gmail.com>? 148650603 +900 commiter ndy2 <emrdbs12@gmail.com>? 148650603 +900 1
Tree
100644 blob 7af8bf5fdd704f73beb3adc5612682a98e1af5 f1.txt 100644 blob 65efe2a145dda7ee51d1741299f848e5bf752e f2.txt 100644 blob 7af8bf5fdd704f73beb3adc5612682a98e1af5 f3.txt
f2의 내용을
y z
로 변경하고 add
C:\Users\1\Desktop\gitfth>git add f2.txt C:\Users\1\Desktop\gitfth>git status On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) modified: f2.txt
하면
새로운 objects blob이 생성되고
y z
의 내용에 대한 정보를 가짐
INDEX의 두번째 줄 도 변경됨
100644 7af8bf5fdd704f73beb3adc5612682a98e1af5 0 f1.txt 100644 2794c87096yyyyyyyyyyyyyyyyyyyyyyyyyyy 0 f2.txt 100644 7af8bf5fdd704f73beb3adc5612682a98e1af5 0 f3.txt
INDEX
커밋을 하면
새로운 커밋 객체가 생성됨
Commit
tree ededd83490b5e5zzzzzzzzzzzzzzzzzzzzzzzzz parent e42e333fda358xxxxxxxxxxxxxxxxxxxxx authhor ndy2 <emrdbs12@gmail.com>? 148650603 +900 commiter ndy2 <emrdbs12@gmail.com>? 148650603 +900 2
자신의 Tree도 생성됨
Tree
100644 blob 7af8bf5fdd704f73beb3adc5612682a98e1af5 f1.txt 100644 blob 2794c87096yyyyyyyyyyyyyyyyyyyyyyyyyyyy f2.txt 100644 blob 7af8bf5fdd704f73beb3adc5612682a98e1af5 f3.txt
각각의 커밋은 자신이 생성된 시점의 스냅샷을
Tree
라는 정보구조를 통해 가지고 있다.object - objects 폴더 안에 있는 파일
blob
- 파일의 내용을 담고 있다.
tree
- 디렉토리의 파일 명과 blob의 정보를 담고 있다.
commit
- tree와 parent, 작성자와 commiter 정보, commit message를 담고 있다.