git add
git add 명령을 실행하면 최상단에 해당 오브젝트가 생성됨과 동시에 index라는 파일에 add한 파일에 대한 오브젝트가 생성된다. 이 때 만약 파일 안에 내용이 같을 경우 index 안에서는 같은 오브젝트를 바라보게 된다(상단 오른쪽 이미지 참조). 그 이유는 뭘까? git은 파일이름을 정하는 원리는 SHA-1이라는 해쉬알고리즘을 이용해 압축된 파일 내용을 변환한다. 따라서 파일 내용이 같으면 같은 git 파일 명이 나오게 된다.
git commit
commit을 하면 index에 있던 내용이 담긴 오브젝트(tree)를 담아서 새로운 오브젝트를 생성하게 된다. 만약 기존의 내용을 수정해서 commit 한다면 tree와 parent를 확인할 수 있다. tree는 내용이 바뀐 현재 상태의 내용들을 담고 있는 오브젝트를 의미하고 parent는 그 전의 오브젝트를 의미한다.
git status
검색하거나 공부할 때 중요한 개념이 working directory / index, staging area, cache / repository 가 있다. working directory는 현재 작업중인 로컬을 의미한다. index, staging area, cache는 같은 곳을 의미하는데 사용자가 add하면 파일이 생성되는 곳을 의미한다. 여기서 repository란 원격 저장소를 의미한다.
git status 명령어를 입력하면 이 세장소의 압축된 내용을 의미하는 해쉬값을 비교해 현재 상태를 알려주게 된다.
참조
지옥에서 온 Git
'TIL' 카테고리의 다른 글
Git의 원리 (0) | 2023.08.28 |
---|---|
Git branch (0) | 2023.08.21 |
공부한 git 사용법에 대한 정리 (0) | 2023.08.17 |
console.log()로 [object]를 찍고 싶을 때 (0) | 2023.07.25 |