https://github.blog/2020-12-17-commits-are-snapshots-not-diffs/
위 블로그 글을 읽고 코드숨 커뮤니티와 스터디를 진행했습니다.
'📹 CCTV는 하루종일 영상을 찍어 보관하는데 메모리를 어떻게 감당할까?' 라는 생각을 해본 적이 있는가?
CCTV는 벽과 건물 등 움직이지 않는 부분은 배경으로 인식해 메모리 낭비를 줄인다.
만약 사람이 지나가면 그 부분만 따로 객체로 인식해 저장한다.
오늘 스터디를 하면서 불현듯 스친 생각이다. 커밋도 비슷한 방식으로 동작한다.
커밋은 CCTV 영상의 전체화면 스냅샷이다.
그런데 그 전체화면에는 방금 바뀐 생생한 부분이 있는가 하면, 며칠전에 저장된 오래된 부분이 있을 수도 있다.
커밋이 왜 스냅샷인가?
커밋은 디퍼런츠만 단순히 따로 저장하는 것이 아니라 변경되지 않은 부모도 참조한다.
첫 번째 케이스처럼 diffs만 따로 커밋2에 저장하는 것 처럼 보이지만 실상은 두 번째 케이스와 비슷하다.
따로 떨어져있는 것 같지만 연결되어있다.
만약 커밋이 diff라면 2번째 커밋을 가리킬 때는 회색부분밖에 보이지 않아야 할 것이다.
두번째 커밋에서 첫번째 커밋과 공통된 부분은 "어, 그거? 전에 설명해놨어 여기로 가봐" 하고 가리켜준다.
그래서 Head가 2번째 커밋을 가리킬 때 첫 번째 커밋했던 부분까지 한꺼번에 볼 수 있는 것이다.
세번째 커밋이 만들어졌을 때 만약 1번째 커밋 이후에 2,3까지 변경되지 않은 부분이 있다면 "그건 여기란다" 하고 길을 제시해주며, 커밋 1을 가리킨다.
커밋은 단순한 스냅샷이 아니라 전 스냅샷들과 긴밀히 연결되어있는 3d 퍼즐처럼 생긴 스냅샷이었던 것이다.
굳이 다시 설명할 필요 없는 부분을 전의 스냅샷과 연결해놓은 3d 퍼즐 스냅샷이다.
head : 현재 브랜치를 가리키는 것
브랜치는 커밋을 가리킨다.
'회고' 카테고리의 다른 글
코드숨 Spring 2주차 주간회고 - 생산성 높이는 법, 우선순위대로 일하기 (0) | 2021.02.02 |
---|---|
코드숨 Spring 1주차 주간회고 - 함께 자라기, "매일"의 힘 (0) | 2021.01.24 |
[주간회고] 2021.1월 1주 (0) | 2021.01.05 |
[2020년 회고] 궁극의 실행력, 최고의 습관 독서 (0) | 2020.12.31 |
[주간회고] 2020.12월 4주 (0) | 2020.12.28 |