소프트 스킬 · 심화
커밋 해시(commit SHA)는 어떤 정보들을 입력으로 계산되나요? 커밋 메시지나 작성자만 다르고 트리 내용이 동일한 두 커밋이 서로 다른 해시를 갖는 이유와, 이 특성이 히스토리 무결성에 어떤 의미를 갖는지 설명해주세요.
힌트 · 커밋 객체에 포함되는 부모 해시·트리 해시·메타데이터와 해시 체인의 변조 불가능성 관점에서 접근하세요.
트리 객체부모 커밋메타데이터해시 충돌무결성
모범답안
커밋 해시는 해당 커밋을 구성하는 여러 정보들의 해시값입니다. 구체적으로는 커밋이 가리키는 트리 객체의 해시, 부모 커밋들의 해시, 작성자 이름, 이메일, 커밋 시간 등의 메타데이터, 그리고 커밋 메시지가 모두 입력으로 사용됩니다.
커밋 메시지나 작성자만 다르고 트리 내용이 동일한 두 커밋이 서로 다른 해시를 갖는 이유는 바로 이 메타데이터와 커밋 메시지가 해시 계산에 포함되기 때문입니다. 트리 내용이 같더라도 커밋을 만든 사람이나 시점, 혹은 남긴 설명이 다르다면 이는 분명히 다른 커밋으로 간주되어야 합니다.
이러한 특성은 히스토리 무결성에 매우 중요합니다. 각 커밋은 고유한 해시를 가지며, 이 해시는 해당 커밋의 내용뿐만 아니라 그 이전 커밋들의 정보까지 연쇄적으로 반영합니다. 만약 누군가 과거의 커밋 내용을 조금이라도 변경한다면, 해당 커밋의 해시는 물론이고 그 이후의 모든 커밋 해시가 달라지게 됩니다. 따라서 Git은 이러한 해시 체인을 통해 히스토리의 변조 여부를 쉽게 감지할 수 있으며, 이는 코드의 신뢰성과 안정성을 보장하는 핵심 메커니즘입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.