생활코딩

Coding Everybody

objects 파일명의 원리

토픽 생활코딩 > 프로젝트 관리 > 버전관리 시스템 > 지옥에서 온 Git (새 수업으로 대체)

수업소개

git은 파일의 내용 기반으로 object 파일의 이름을 만듭니다. 이것 덕분에 git은 매우 효율적으로 중복 데이터를 저장할 수 있습니다. 여기는 그 원리인 sha1 hash에 대해서 알아봅니다. 

수업

댓글

댓글 본문
  1. 20210613
  2. 주니어개발자
    sha1 hash !!
  3. supernet
    완료!!
  4. 유진희
    여기서 해시의 원리가 우리가 sns에서 사용하는 해시태그의 원리인것 같은데 맞지요?
  5. PassionOfStudy
    git은 sha1 해쉬알고리즘을 이용하여 파일의 내용과 몇가지 부가적인 정보를 합친
    해쉬값으로 Object파일의 이름을 만드는 군요!
  6. jaepil
    질문이 있습니다.

    git은 그럼 각 파일을 sha로 단방향 암호화 한 blob파일로 가지고 있다는 것이잖아요?

    그런데 merge 시 뒤에서 설명해주시는 걸 보면 line by line으로 비교하여 conflict를 해결하는데, 그 말은 각 파일의 각 라인을 각기 다른 sha 변환 값으로 저장한다는 것인가요?

    가령,
    a
    b
    c


    a
    b
    d

    x
    y
    z

    라는 세 파일이 있을 때 1,2번은 2번 line까지는 같으니 더 '유사한' blob이 되는거고 마지막 파일은 완전히 다른 blob이 되는건가요?
    그리고 만약 각 라인을 모두 sha를 통과시켜 해쉬값으로 저장한다면 .git의 용량은 원 프로젝트 용량보다 크거나 비슷하게 되는걸까요?
  7. software.lee
    감사합니다
  8. 제로스
    sha1 hash..
    감사합니다.
  9. 고스트프리
    감사합니다.
  10. BANIP
    깃의 수많은 버전들은 모두 다른 내용을 가지고 있다. git은 수많은 버전들은 파일명, 만들어진 날짜순으로 보관하는게 아니라 sha-1이라고 부르는 특정 해쉬 알고리즘을 통과한 값을 기준으로 저장하기 때문이다.
    이러한 알고리즘은 회원가입 시스템을 구비하고있는 사이트 관리자가 사용자의 개인정보를 md5를 통과시킨 해쉬값으로 저장하고 있는것과 비슷한 원리다. 거대한 데이터를 40자밖에 안되는 고유한 이름을 지니게 할 수 있어 기존의 스냅샷의 중복을 최소화시킬 수 있다.