일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 인천남중
- tacotron
- 인하대학교
- texttospeech
- Xangle
- 놀이동산의슈퍼컴퓨터를작동시켜라
- 신영준
- jaypark.dating
- 프로그라피
- CrossAngle
- 2019회고
- 프로그래머스
- 우분투비트확인
- machinelearning
- 개발자회고
- 타코트론
- 결과를얻는법
- 나는리뷰어다
- 로그남기기
- 개발자를위한파이썬
- 서구동구예비군훈련장
- 서버로그
- intell
- graphicdriver
- 봉사활동
- 한빛미디어
- 노트북덮개
- 쇠막대기
- 심플소프트웨어
- 인하멘토링
- Today
- Total
jc.jang
19일 - 단지 git branch가 하고 싶었을 뿐 본문
단지 git branch를 하고 싶었다.
버전관리 시스템이라고 git을 많이 사용한다고 하는데 여태껏 팀 프로젝트를 하면서 git을 사용해 본 적이 없었다. 그래서 git을 사용할 이유가 없었다. 그러다보니 요즘 opensource들은 다 git으로 공개하던데, git을 모르니 아무래도 내가 모르는 무언가가 있지 않을까 궁금하기도 했다. 그래서 git을 배워보기로 했다.
가장 쉬운 방법은 생활코딩 이고잉님 강의를 듣는 것인데, 사실 몇 주전에 듣고 또 까먹었다. 그래서 오늘은 저번에 들은 것 복습했다.
버전 관리, 그 어려운 것을 할 필요가 있다면 하는게 맞다. 관리하기 힘든 대상을 잘 관리 할 수 있게 도와주니까. 하지만 배보다 배꼽이 큰 상황이되면 곤란하다. 버전 관리가 딱히 필요없다면 dropbox나 googledrive같은 공유폴더를 만드는 것도 좋다. 하지만 git을 배우는 이유는 git 명령어만 치는게 아니라 git의 원리를 통해 새로운 영감을 얻을 수도 있고, 그냥 인간이기때문에 궁금해서 배운다.
놀라웠던 점은 commit할때, parent, tree, commit로 버전 관리를 한다는 것이었다. 사실 도대체 어떻게 버전 관리를 할까 생각 했었는데 강의를 보니까 신기했다. 파일 관리는 index와 object폴더에서 관리를 하고 index에서는 파일이름과 그 내용에 해당하는 해쉬코드 값을 이용해 어떤 파일의 내용을 가리키는 오브젝트를 만든다.
예를 들어 index 폴더에는
78e3459r02q34eq // f1.txt
이런 식으로 저장이 되있을 것이다.
f1.txt는 파일이고 78~eq는 그 파일의 내용을 해쉬코드로 변환해서 얻은 값이다.
여기서 알 수 있는 것은 파일의 내용이 같으면 해쉬코드 값도 같고, 파일이름이 다르더라도 파일 내용이 같으니까 가리키고 있는 오브젝트 이름도 같다. 그러니까, 만약 f1.txt를 복사한 f3.txt가 있다면 그것또한
78e3459r02q34eq // f1.txt
78e3459r02q34eq // f3.txt
이렇게 저장된다.
그리고 object폴더에는 밑에 78이라는 폴더가 있고 그 밑에 e3459r02q34eq라는 파일이 존재한다.
commit의 원리
commit에는 주요한 정보 2가지가 들어간다.
한 가지는 parent라고해서 이번 commit 이전의 버전의 정보를 갖고 있는 commit을 가리키는 자료가 있고
다른 한 가지는 커밋이 일어난 시점에 작업 디렉토리에 담겨 있는 파일들의 정보(스냅샷)을 담고 있는 트리 라는 자료가 있다.
그래서 각 버전마다 다른 트리를 가리키고 있고 파일의 이름과 파일의 내용이 각각 링크가 되어있기 때문에 버전에 적혀있는 트리를 통해서, 버전이 만들어진 시점에 프로젝트 폴더에 대한 상태를 얻을 수 있다.
blob tree commit으로 구성 되어 있다.
단지 팀프로젝트때 git으로 버전관리하면서 코드 공유하고 싶었는데 git의 원리까지 알게 되는 신비함...
hash가 은근히 많이 쓰인다는 것을 알게 되었고 특히 commit할 때 이전 commit의 정보를 parent에 저장하고, tree로 현재 파일들의 정보를 저장하는 자료구조는 정말 끝내주는 것 같다.
내일 자취방 알아본다고 했는데 그냥 집에 와야겠다.... ㅠㅠㅠㅠ 내일은 git branch를 배워서 꼭 회사 pc랑 노트북이랑 같은 파일로 작업하고 싶다. pycharm이랑 visual studio연동하는 것도 분명 있는 것 같은데.... 알아봐야 겠다...
'예전글 > 2018-3월' 카테고리의 다른 글
26일 - 뽀모도로 시간관리 pomodoro (0) | 2018.03.27 |
---|---|
25일 카페에서 (0) | 2018.03.26 |
24일 - 소리를 이용해 열대 우림을 구할 수 있을까요? (0) | 2018.03.24 |
17일 - ASUS Zenbook UX410UQ-GV060T 노트북 후기 (0) | 2018.03.17 |
15일 오랜만에 쓰는 글 (0) | 2018.03.15 |