Important ● 로컬 설정 파일 Nice To Have ● refs 디렉토리 ● HEAD ● 해싱 함수의 기초 ● 깃 오브젝트 |
로컬 설정 파일
깃 설정은 글로벌과 로컬 두 가지 방식으로 설정 할 수 있다.
글로벌로 설정할 경우 모든 깃 repository에 동작하는 설정을 할 수 있으며
로컬로 설정할 경우 설정한 해당 repository에서만 적용되는 설정을 적용할 수 있다.
해당 챕터에서는 로컬에서 간단한 설정 조작만 맛 볼 예정이다.
로컬 설정은 config 파일을 직접 수정하거나 명령어를 통해서 깃의 설정을 바꿀 수 있다.
config 파일 수정
CLI 환경에서 config 수정
refs/ 이 폴더 안에는 heads, tags 등의 하위 폴더가 있다. heads 폴더는 저장소에 존재하는 브랜치에 대한 파일들이 존재하고 tags 폴더는 태그에 대한 파일들이 존재한다. 그리고 각 파일들은 해시값을 저장하고있다. 즉, refs 폴더에는 저장소에 존재하는 브랜치, 태그에 대한 참조값을 가지고 있다. HEAD HEAD 라는 포인터가 가리키는 곳의 참조값이 저장된다. 주로 브랜치, 태그 포인터를 가리키는 참조값이 저장되며(HEAD → ~/main, ~/1.0.0) 커밋 해시(분리된 상태)를 직접 참조하기도 한다. object/ 저장소의 모든 데이터를 저장한다. 커밋, 트리, 블롭, 주석 태그 4종류의 깃 객체가 저장된다. 파일 데이터에 대한 해시값을 저장하므로 파일이 변경되면 해시값도 변경된다. refs/ 는 "이 브랜치, 태그는 어떤 커밋을 가리키고 있는가?"를 알려주고 objects는 "그 커밋이 어떤 내용인가?"를 저장한다. |
깃은 SHA-1이라는 해시 함수를 사용한다.
key(해시)-value(파일) 형식으로 작동한다. 사용자가 해시를 제시하면 파일을 반환해주는 구조이다.
깃의 해시는 반드시 깃 오브젝트와 연결되어있다.
깃은 해시값의 변경 여부를 확인해서 파일의 변경여부를 체크하게 된다.
오브젝트 폴더에는 해싱된 파일들이 저장되고 브랜치나 커밋 변경 시 해시 값으로 파일들을 참조하게 되는것으로 보인다.
git cat-file -p <hash> |
위의 명령어로 해시값을 건네서 값을 돌려받을 수 있다.
이전에 등록한 커밋의 해시값을 전달해보니 해당 커밋에 대한 정보를 확인할 수 있었다.
블롭(Blob, Binary Large Object) 파일 내용을 저장하는 객체. 파일이 담고 있는 내용 그 자체이다. 파일명을 제외하고 오직 내용만 저장한다. 트리 디렉토리 내용을 저장한다. 블롭을 가리키는 포인터와 트리를 가리키는 포인터 둘 다 가지고 있다. 블롭의 파일명은 트리가 저장한다. ![]() 커밋 커밋을 하게되면 트리, 부모 등이 저장된다. 체크아웃이나 브랜치를 생성하면 해당 커밋의 트리를 토대로 작업 영역을 구성하게 된다. ![]() ![]() |
git cat file -t <hash> # 객체의 종류를 알려준다. tree/blob/commit ![]() |
참고
1) https://www.udemy.com/course/best-git-github
2) https://erikanes.tistory.com/381
[Git & Github] 18. Git의 이면 - 해싱(Hashing)과 객체
Important 로컬 설정 파일 Nice To Have refs 디렉토리 HEAD 파일 해싱 함수의 기초 깃 오브젝트 이번 섹션은 깃을 사용하는데에 있어서 크게 중요하지는 않다. config 파일을 직접 수정하거나 명령어를 통
erikanes.tistory.com
Section 18: Git의 이면 -해싱(Hashing)과 객체
config 파일은 설정을 위한 파일로 모든 저장소에 존재한다. 이 파일에 값을 설정한다면 이 값은 현 저장소에서만 유효하고 다른 저장소에는 영향이 없다. 그러나 설정 값을 바꿀 때는 많이 없을
velog.io
'Git & Github > [인강] Git & Github 실무 활용 완벽 가이드' 카테고리의 다른 글
[Git & Github] 19. Reflog의 힘 - '사라진' 작업 복구하기 (0) | 2025.05.02 |
---|---|
[Git & Github] 18-1. 해시 함수 (1) | 2025.05.02 |
[Git & Github] 17. 히스토리상의 중요한 순간에 표시하기 (0) | 2025.05.02 |
[Git & Github] 16-2. git push -f (0) | 2025.04.30 |
[Git & Github] 16-1. git commit --amend (0) | 2025.04.30 |