패스잇
소프트 스킬 · 심화

Git의 객체 데이터베이스를 구성하는 blob, tree, commit 객체가 각각 무엇을 저장하며 서로 어떻게 참조하는지 설명해주세요. 동일한 내용의 파일이 여러 디렉터리에 존재할 때 blob 객체는 어떻게 처리되나요?

힌트 · SHA-1(또는 SHA-256) 해시 기반 콘텐츠 주소 지정과 객체 간 참조 구조 관점에서 접근하세요.

blobtreecommit해시참조

모범답안

Git의 객체 데이터베이스는 blob, tree, commit 세 가지 주요 객체로 구성됩니다.

blob 객체는 파일의 실제 내용을 저장합니다. 파일 내용의 SHA-1(또는 SHA-256) 해시 값을 고유 식별자로 사용하며, 내용이 같으면 해시 값도 같아집니다.

tree 객체는 디렉터리 구조를 나타냅니다. 각 tree 객체는 해당 디렉터리에 포함된 파일(blob 객체)과 하위 디렉터리(다른 tree 객체)의 목록을 저장합니다. 여기서 각 항목은 파일 이름과 해당 blob 또는 tree 객체의 해시 값을 참조합니다.

commit 객체는 특정 시점의 스냅샷을 나타냅니다. 각 commit 객체는 부모 commit 객체(들), 작성자 정보, 커밋 메시지, 그리고 해당 커밋 시점의 루트 tree 객체의 해시 값을 참조합니다.

동일한 내용의 파일이 여러 디렉터리에 존재하더라도, blob 객체는 파일 내용이 동일하면 단 하나의 객체만 생성됩니다. 즉, 내용이 같은 파일은 모두 동일한 blob 객체를 참조하게 되어 저장 공간을 효율적으로 사용합니다. tree 객체는 각 디렉터리 구조에 맞게 해당 blob 객체를 참조하는 방식으로 관리됩니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 Git / 협업 면접 질문

← Git / 협업 면접 질문 전체 보기