Git 커밋을 이해하는 것은 복잡하고, 사람들은 다양한 정신 모델을 가지고 있습니다. 설문 조사에 따르면 51%는 커밋을 버전 간의 변경(diffs)으로 생각하고, 42%는 파일의 현재 상태인 스냅샷으로 생각하며, 오직 4%만이 이전 커밋의 역사로 생각합니다.
내부적으로 Git은 커밋을 스냅샷으로 저장하여 체크아웃 시간을 더 빠르게 합니다. 그러나 공간을 절약하기 위해 델타(differences)로 파일을 저장하는 팩파일도 사용합니다.
이 스냅샷 기반 구현에도 불구하고 Git은 델타에서 스냅샷을 재구성하여 비교하는 방식으로 차이를 계산합니다.
일반적인 "잘못된" 정신 모델은 이전 커밋에서부터의 차이로 커밋을 인식하는 것입니다. 이는 정확하지 않지만, 일상적인 사용에서 여전히 유용할 수 있습니다.
가장 일반적인 정신 모델은 코드 변경에 초점을 맞추는 차이로 커밋을 고려하는 것입니다. 다른 모델, 예를 들어 스냅샷,은 파일 이동 및 병합 커밋을 이해하는 데 유용합니다.
또한, 사람들은 커밋과 추가 정보(예: 이메일, 대화)를 연관시키거나 "전" 및 "후" 상태로 바라보는 경우도 있습니다.
jvns.ca
Do we think of git commits as diffs, snapshots, and/or histories?
Create attached notes ...
