Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 유니티 머신러닝
- 너비 우선 탐색
- 유니티 Rotate
- InputManager
- Mathf.Clamp
- 유니티 ResourceManager
- LFS
- ML-Agents
- 유니티 시야 가림
- c++ 문자열 자르기
- 오브젝트 풀링
- Raycast
- 유니티 Vector3
- 이진트리
- git-lfs
- 소스코드 줄번호
- 코드블럭 테마
- LookRotation
- Quaternion.Euler
- 유니티 Collision
- unity
- LayerMask
- 유니티 리소스매니저
- eulerAngles
- 유니티 오브젝트 풀링
- c++
- 유니티
- 알고스팟
- 깊이 우선 탐색
- 유니티 InputManager
Archives
- Today
- Total
무민은귀여워
[생활코딩 - 지옥에서 온 Git] Git의 원리 본문
반응형
Git의 원리
gistory 설치
gistory는 git을 분석하기 위한 도구입니다. 명령을 내렸을 때 git의 내부에서는 어떤 일이 일어나는가를 분석하면서 git이 어떻게 동작하는가를 스스로 공부하는데 도움을 드리기 위해서 고안된 도구입니다.
1. python을 설치합니다. (python2, 3 모두 호환됩니다)
2. pip로 설치합니다.
windows
pip install gistory
mac, linux
python2
sudo pip install gistory
python3
pip3 install gistory
git add의 원리
(댓글 중 - BANIP)
작업 디렉토리상의 변경이 이루어진 상태에서 add 명령어가 아직 수행되지 않았을 경우에는 .git폴더상에서는 아무런 변화가 없다.
add명령어가 실행되면 index파일이 변경되며 Objects폴더에 새로운 파일이 추가된다.
add명령어가 실행되면 index파일이 변경되며 Objects폴더에 새로운 파일이 추가된다.
파일이 SHA-1을 통해 만들어진 체크섬이며 이 경로는 40자 길이의 16진수로 만들어진다. 앞의 두자리는 Object 디렉토리의 새로운 폴더명이 되며, 마지막 38자리는 파일명이 된다.해쉬값의 이름을 가진 파일의 내용은 add시킨 파일의 내용이 담기게된다. index 파일은 변경된 파일명과 함께 해쉬파일을 참조한다.
새로운 파일을 추가하면 마찬가지로 index파일에 새로운 버전을 가진 해쉬태그를 참조하는 파일명이 새롭게 갱신이 되며, 오브젝트폴더에 add한 파일이 해쉬값의 파일명으로 저장된다.
그런데 똑같은 파일을 만들고 add하면 object폴더에 새로운 파일이 추가되지 않는다. 해쉬변환기로 돌린 파일이 object폴더에 이미 존재하면 똑같은 파일을 새로 만들지 않고 해당 파일을 참조하게 된다.
이로써 git은 기존의 버전관리 시스템과는 다르게 아주 효율적인 구조를 가지고 있다고 볼 수 있다. 깃은 데이터를 스냅샷으로 취급되기때문에 중복될 일이 없어 대형프로젝트에 도입하면 크기가 매우 줄어든다.
objects 파일명의 원리
git은 파일의 내용 기반으로 object 파일의 이름을 만듭니다. 이것 덕분에 git은 매우 효율적으로 중복 데이터를 저장할 수 있습니다. 여기는 그 원리인 sha1 hash에 대해서 알아봅니다.
(댓글 중 - BANIP)
깃의 수많은 버전들은 모두 다른 내용을 가지고 있다. git은 수많은 버전들은 파일명, 만들어진 날짜순으로 보관하는게 아니라 sha-1이라고 부르는 특정 해쉬 알고리즘을 통과한 값을 기준으로 저장하기 때문이다.
commit의 원리
status의 원리
반응형
'IT > Git' 카테고리의 다른 글
memo) git commit 취소 (0) | 2021.05.17 |
---|---|
memo) Git branch 이름 콘솔에 표시하도록 설정 (0) | 2019.01.02 |
메모) Git 캐쉬 지우기 (0) | 2019.01.02 |
[생활코딩 - 지옥에서 온 Git] git의 혁신 branch (0) | 2018.07.15 |
[생활코딩 - 지옥에서 온 Git] 버전관리의 본질 (0) | 2018.07.15 |
Comments