Git 교과서

코드 이력, 하나도 놓치지 마라!

버전 관리 시스템의 이해와 설치부터 커밋, 브랜치, 임시 처리, 병합, 복귀, 서브모듈, 태그까지
깃, 소스트리, 깃허브로 실습하며 기본기를 탄탄하게 다진다!

Yes24 교보문고 알라딘 인터파크 길벗

폴더 vs 저장소


컴퓨터 안에 있는 모든 파일들은 운영체제의 파일 시스템에 의존하여 관리 됩니다.
깃 또한 운영체제에 설치되는 프로그램으로 파일시스템을 이용하고, 이를 응용합니다.


파일시스템


운영체제의 파일시스템은 하드디스크안에 존재하는 파일의 내용과 이를 탐색할 수 있는 인덱스를 가지고 있습니다.

파일 시스템은 크게 파일과 폴더 2가지의 개념을 가지고 있습니다. 파일은 실제적인 내용을 가지는 데이터의 집합이며, 폴더는 여러개의 파일을 관리하기 위한 논리적 개념입니다. 우리가 코드를 작성할 때는 파일로 만들어지고, 이렇게 만들어진 파일들은 하나의 그룹으로 묶여져서 관리하는 것을 폴더 라고 합니다.

폴더를 이전 용어로 디렉터리(Directory)라고도 합니다.


깃의 파일관리


깃은 컴퓨터에 설치되는 응용프로그램 입니다. 깃을 설치했다고 해서 기존 운영체제의 파일시스템을 대치하지 않습니다. 그렇다면 깃은 파일의 변경 내역을 어떻게 저장하고 관리할 수 있을까요?

깃을 설치한 후에도 우리는 동일한 파일시스템을 이용합니다. 파일을 생성하고 폴더를 만들수 있습니다. 마치 깃을 설치한 후에도 외형적인 모습은 기존 폴더와 유사합니다. 하지만, 내부적으로 깃은 무언가의 특별한 관리 행위를 하고 있습니다.

기존 폴더를 깃 저장소로 설정을 하게 되면, 깃은 내부적인 파일의 상태를 추적 관리하여 이력을 기록할 수 있도록 특별한 영역을 하나 만들게 됩니다. 이 특별한 영역은 일반적으로 보이지 않는 숨겨진 폴더를 하나 생성합니다. 이 숨겨진 폴더 영역에 깃은 버젼을 관리할 수 있는 시스템(VCS, Version Control System)을 자체적으로 구축합니다.

이 숨겨진 깃의 저장소는 파일과 폴더의 각 시간, 변경내역등을 기록할 수 있는 정보들로 가득찹니다. 저장소는 폴더내에서 변경되는 프로젝트의 리비전(revision)과 히스토리를 가진 데이터베이스와 유사합니다.


결론


일반 폴더와 깃의 저장소의 차이점은 깃이 자체적으로 이력을 기록할 수 있는 숨겨진 영역 폴더가 있는지 존재 여부 입니다. 만일 깃 저장소에서 숨겨진 영역 폴더를 삭제하게 되면, 저장소는 다시 일반 폴더로 되돌아 갑니다. 또한, 이미 기록된 버젼의 이력도 같이 삭제 됩니다.