4.1.1 파일 관리 방법
먼저 깃이 없던 시절, 전통적인 파일의 이력 관리 방법을 알아봅시다. 보통 우리는 의미 있는 변경을 할 때 파일을 복사합니다. 그리고 복사한 새 파일에는 추가하거나 변경하고 싶은 내용을 적용합니다. 하지만 이렇게 파일을 복사하는 형태는 파일의 변경 내역을 기록하는 것보다 더 많은 파일을 생성하고 관리해야 하는 부작용이 있습니다. 또 모든 내용이 중복되기 때문에 용량도 많이 차지합니다.
▼ 그림 4-1 파일 복사로 파일 관리
반면 깃의 커밋은 새로 변경된 부분만 추출하여 저장합니다. 그것도 파일 이름을 변경하지 않고도 동일한 파일 이름으로 하나로 관리가 가능합니다. 즉, 시간에 따라 변화되는 내용만 관리하고, 코드가 변화된 시간 순서에 따라서 영구적으로 저장합니다. 이를 커밋이라고 합니다.
▼ 그림 4-2 깃으로 파일 관리
개발자 입장에서는 복잡한 구조의 파일을 관리하지 않아도 되고, 여러 개의 파일보다는 파일 하나로 모든 이력을 처리하기 때문에 유용합니다. 커밋은 부모 커밋(parent commit)을 기반으로 변화된 부분만 새로운 커밋으로 생성합니다. 그리고 커밋은 파일의 시간적 변화도 함께 저장합니다.