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