git은 objects 파일을 blob, commit, tree, tag 로 분류할 수 있는데, 특히 blob의 경우 파일의 컨텐츠를 담게 되는데 파일명을 정할때 해당 파일을 컨텐츠를 통째로 담아 해시로 만드는데 그래서 파일 내용이 바뀌지 않을경우 같은 파일명이 나와서 커밋(스냅샷)을 계속 찍어도 파일 내용이 바뀌지 않는다면 해당 파일은 하나만 저장하고 있습니다.
https://storycompiler.tistory.com/7
https://blog.hwahae.co.kr/all/tech/12046