-
Git의 원리 배우는 이유
- 배우고 싶은 인간의 본능
- 생각보다 어렵지 않음. 원리를 알면 공부에 도움이 됨(기억이 오래감, 속도향상, 응용가능)
- git의 사용자 -> 많은 영감을 얻을 수 있음
gistory 설치
gistory
: 오픈 소스.
쉽게 git의 내부를 볼 수 있음.
웹으로 돌아감.
.git이라는 디렉토리 내용들을 리스트로 보여줌
변경되거나 추가된 파일이 위에 뜸 -> 클릭하여 상세 내용 추적 가능
1) python 설치
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"검색 후 페이지에 들어가서 확인
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