깃의 정체(22.09.17TIL)
진님께서 깃의 10장을 강력추천하셔서 이번주는 10장부터 학습을 진행하기로 했다. 깃의 내부에 대한 챕터인데, 여기서 깃의 정체를 알 수 있었다. 깃의 명령어는 porcelain명령어(사용자 친화적인 명령어)와 flumbing명령어(실제로 깃을 구성하고 세부적인 명령이 가능한 명령어)가 존재한다. 지금 사용하고 있는 명령어(porcelain)도 너무 어려운데 실제로 깃을 구성하는 명령어는 더 작고 복잡하다는 사실에 놀랐다. 평소에 쓸일이 자주 없어 이해하기 조금 난해하기도 했다. 하지만 10장은 시간을 투자할 만한 가치가 있었다.
깃의 정체
깃이 어떻게 동작할까? 지금까지는 훌륭하신 분이 잘만들었겠지~ 하고 내부적으로 뜯어볼 생각할 엄두도 내지 못했는데 깃도 결국 key-value쌍으로 이루어진 구조라는 것을 알게 되었다. 깃은 blob개체, tree개체, commit개체 각각이 체크섬이라는 키를 이용해 저장된 데이터를 불러오고, 서로의 체크섬을 가리키면서 불필요한 복사를 줄이는 효과적인 해쉬 트리모델이었다.
또 하나의 굳이
솔직히 10장을 딱 처음 봤을때 바로 든 생각이 굳이...??였다. 지금 깃 명령어도 제대로 못 써서 아등바등 대고 있는데 내가 이걸 배우는게 맞을까?라는 생각이 들었는데, 깃의 내부구조를 배우고나니깐 조금은 깃에대한 공포감이 줄어든 것 같다. 알고보면 우리에게 친숙한 키-밸류 쌍을 이용한 버전관리 시스템이라는 것도 알게 되었고 해쉬가 블록체인과도 관련있다는 점도 흥미로웠다. 상대에 대해서 모르고 있을때는 스스로 상상을 하게 되지만 근본적인 부분을 알고나면 허상이 걷힌다. 하나하나의 굳이를 채워나갈 때마다 내가 강해지는 게 느껴진다. 앞으로도 새로운 굳이를 찾기위해 노력하자!