관리 메뉴

김종권의 iOS 앱 개발 알아가기

[git] 4. git의 원리 본문

Git, CocoaPods, Xcode, Shell/Git

[git] 4. git의 원리

jake-kim 2020. 6. 9. 19:01

1. git add 원리

1) git add

2) 내부 정보

index - 파일의 이름, id

objects - 파일의 내용

index, 파일의 object(78981922...)와 파일이름
objects, 파일의 내용

※ cp할 경우 같은 object를 가리킴

 <-> 내용이 같으면 같은 object를 가리킴

cp f1.txt f3.txt

2. objects 파일명의 원리

- hash

* 원리 hello의 해쉬값인 aaf4c...,

여기서 두 글자(aa)를 떼서 objects디렉토리 밑에 "aa" 디렉토리 생성

3번째 문자열 부터(f4c6~) 나머지 문자열 이름의 파일을 만들어서 hello의 내용을 저장

 

* git add하면 내부적으로 일어나는 현상

해당 파일의 내용 확인 -> 내용 압축 -> SHA1해쉬 통과 -> 위의 원리를 통해 디렉토리, 파일 생성 후 내용 기입

 

3. commit의 원리

- commit시, objects밑에 다음과 같은 내용 생성

 

commit -> objects 디렉토리 안에 저장 -> tree타입의 object생성

 

* 2번 커밋 한 경우

- parent는 직전에 커밋한 정보

* snapshot : 시간 정보 (author, committer)

 

* 세 가지의 objects타입
(1) commit

(2) tree : blob에 대한 정보

(3) blob : 파일의 내용

4. status의 원리

1) index 디렉토리

- git add 할 경우 이곳의 내용이 업데이트

 

2) objects 디렉토리

- 현재까지 commit한 결과

 

* index내용과 objects내용이 같으면 commit할 것이 없다는 의미

 

* work flow 세 가지를 중점적으로 볼 것

(1) working directory == 프로젝트 폴더(.git이 있는 폴더)

(2) staging area == index

(3) repository == cache

 

* 참고 : opentutorials.org/course/2708/15241

 

Comments