ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Git의 원리
    Study/Git 2020. 3. 2. 03:14

    Git의 원리 배우는 이유

    - 배우고 싶은 인간의 본능

    - 생각보다 어렵지 않음. 원리를 알면 공부에 도움이 됨(기억이 오래감, 속도향상, 응용가능)

    - git의 사용자 -> 많은 영감을 얻을 수 있음

     


    gistory 설치

    gistory

    : 오픈 소스.

    쉽게 git의 내부를 볼 수 있음.

    웹으로 돌아감.

    .git이라는 디렉토리 내용들을 리스트로 보여줌

    변경되거나 추가된 파일이 위에 뜸 -> 클릭하여 상세 내용 추적 가능

     

    1) python 설치

    http://python.org/

     

    Welcome to Python.org

    The official home of the Python Programming Language

    www.python.org

    2) pip(Python Package Index)로 설치

    Window일 경우

    pip install gistory

     

     

    git이 잇는 디렉토리로 들어간 뒤 gistory 입력하고 결과에 있는 숫자를

    웹으로 들어가서 localhost:숫자 입력하면 gistory 뜨면 설치 성공


    Git add의 원리

    gistory: gistory로 이동

    Ctrl + c: gistory 종료

     

    git add f1.txt를 했을 경우

    index파일과 objects/.....파일이 추가됨

    objects/...: objects(객체)

    objects파일은 f1.txt 안에 잇는 내용이 적혀있음. 편의성을 위해 적혀있으나 실제로 적혀있는 건 아님

    실제로는 index파일에 적혀잇음

    index에 들어가면 적힌 글은 긴 숫자와 영어 조합으로 된 파일(objects)에 내용이 담겨 있다는 뜻임.

     

    cp f1.txt f3.txt를 하면 object가 새로 생성되지 않고, f1과 f3가 같은 object를 가짐

    => git은 중복 제거

    아래 사진과 같은 느낌


    objects 파일명의 원리

    내용이 같으면 objects의 파일명이 같다.

     

    goole에 "sha1 online"검색 후 페이지에 들어가서 확인

    http://www.sha1-online.com/

     

    SHA1 online

    sha-1 md5 md2 md4 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru gost adler32 crc32 crc32b haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 ha

    www.sha1-online.com

     

    git은 우리가 저장한 파일의 내용을 sha1이라는 hash 알고리즘을 통과시켜 그 파일의 이름을 도출한 다음에 이 파일의 정보, 이 hash값 앞 두글자을 따서 하위 파일을 만들고 뒤 그 다음 글자로된 파일을 만들어서 hello라는 내용을 저장함

    => hello라는 내용의 파일은 objects/aa/f4c6..

    추가 정보가 더 저장될 수 있으므로 실제 값은 다를 수도 있음.


    commit의 원리

    commit 후 gistory 확인하면 여러 파일이 생성 됨.

     

    objects/...(objects): commit 메세지가 적혀있음 tree는 commit한 파일의 정보

     

    파일을 수정하고 commit을 다시 하면 tree 아래 parent가 생김 parent는 이전 버전. tree 값이 달라짐(수정된 파일 objects값 변경)

    => tree를 통해 버전이 만들어진 시점에 프로젝트 폴더에 대한 상태를 알아낼 수 있음(버전이 만들어졌을 때 스냅샷)

     

    [정리]

    objects라는 디렉터리 안에 들어가 있는 파일은 objects 파일이고

    objects은

    - 파일의 내용을 담고있는 blob

    - 어떤 디렉토리의 파일명과  그 파일명에 해당되는 blob에 대한 내용을 답고있는 tree

    - commit

    이 세가지로 구성되어 있음

     


    status의 원리

     

    index에 있는 내용와 commit을 했을 때 objects 안에 있는 내용이 일치할때

    => status: commit할게 없다

    내용이 다르다면 commit 대기상태인 것을 알 수 있음..

     

    구글이미지에 "git working directory vs index vs repository" 검색해 이해하기

     

    - working directory

    - index, staging area, cache

    - repository

     

     

     

    'Study > Git' 카테고리의 다른 글

    원격저장소(Remote Repository) - Github  (0) 2020.03.02
    Git - branch  (2) 2020.03.02
    Git - 명령의 빈도와 메뉴얼 보는 방법  (0) 2020.03.02
    Git - 과거 버전으로 돌아가기  (0) 2020.03.02
    Git - 버전 만들기, Stage area  (0) 2020.03.02
Designed by Tistory.