
커밋 개체가 생성될 때 생성되는 SHA는 파일 내용의 SHA이거나 커밋 작성자, 타임스탬프 및 날짜 등과 같은 HASH 함수에 대한 다른 입력도 있다는 점을 안내해 주세요.
내 마음 속에 다음과 같은 혼란이 있습니다
commit object's index=SHA(Contents of file)?
OR
commit object's index=SHA(Contents of file+author of commit+date of the day+time of the day)?
답변1
순수한 파일 콘텐츠에 대한 커밋은 git
존재하지 않으므로 첫 번째 가정(SHA(파일 콘텐츠))은 결코 사실이 아닙니다. 실제로 매파일체크인하면 객체로 저장되고이것객체의 이름은 파일의 SHA-sum입니다.
하지만 파일을 체크인하는 것뿐만 아니라 파일에 관한 것입니다.계층. 파일 계층 구조는 다음과 유사합니다.나무 개체에는 이 (하위) 계층 구조의 모든 파일(객체 이름 - SHA-sum으로 표시됨), 파일 이름 및 권한이 포함되어 있습니다. 트리 파일의 개체 이름은 이 목록에 대한 SHA 합계입니다. 이는 또한 재귀적으로 작동합니다. 즉, 트리 개체에서 트리 개체를 참조할 수 있습니다(하위 디렉터리가 작동하는 방식).
귀하의 실제저지르다(0개 이상의) 상위 커밋의 SHA 합계, 리포지토리의 루트 디렉터리와 유사한 트리 개체의 이름, 커밋 날짜, 커밋 작성자, 커밋 메시지 등으로 구성됩니다. 커밋 이름("개정 번호")은 다음과 같습니다. SHA 합계가 끝났습니다.이것목록.