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
- redis
- html
- nodejs
- Java
- javascript
- mybatis
- git
- AWS
- mongodb
- reactor
- reactive
- Heap
- NoSQL
- spring
- Lombok
- network
- ajax
- Static
- github
- Elk
- 네트워크
- 데이터통신
- r
- VCS
- effective
- cache
- socket
- libuv
- Linux
- HTTP
Archives
- Today
- Total
빨간색코딩
git object 파헤치기 본문
이전 포스팅(http://sjh836.tistory.com/37)에서도 정리했지만, 과 후배들에게 git에 대해 발표자료를 준비하다보니 시각적으로 좀더 보이는게 필요했다.. 명령어를 쳐보며 직접 git object들이 생성되가는 것을 본다면 git의 원리를 좀더 쉽게 이해할 수 있지 않을까 한다.
git은 4개의 object로 관리한다. 객체명은 SHA1로 40자리로 해쉬된다. 따라서 내용이 같으면 객체명이 같다. 객체들은 .git/objects
에 위치한다. 내용을 까볼려면 git cat-file –p 객체명
으로 보면된다.
- blob
- tree
- commit
- tag
구조도
시나리오
test 디렉터리에 git init를 한 뒤에, hello.txt를 만들고 "안녕 나는 공부중이야" 를 저장한다. 그 뒤 git add하고 git commit한다. 마지막으로 git tag를 한다. 이 과정중에서 생성되는 object들을 보자.
1. blob
git add할 때 생성된다. 파일 내용이 들어 있다
2. tree
git commit할 때 생성된다. 타입과 객체명, 파일명이 기록된다.
3. commit
git commit할 때 생성된다. tree객체명, 부모commit객체명, author, committer, message를 기록한다. 이는 commit할때 git config에 있는 name과 email이 찍히는 거다.
4. tag
git tag할 때 생성된다. commit 객체명, tag이름, tagger, message가 기록된다.
'Git' 카테고리의 다른 글
상황에 따른 git 명령어 (커밋복구, 파일명변경, 중간에 gitignore설정, 원격브랜치 삭제, merge취소, 인증) (0) | 2018.04.09 |
---|---|
github 이모티콘 (0) | 2017.05.01 |
git ignore 추적하지 않는 파일목록 관리 (0) | 2017.03.19 |
git으로 협업(브랜치, 충돌해결, pull request) (0) | 2017.03.19 |
git의 원리 (git object를 중심으로) (0) | 2017.03.19 |
Comments