
GIT 을 배워야 하는 이유
GIT은 프로젝트의 시간과 차원을 자유롭게 넘나들 수 있도록 해준다.
GIT은 여러 사람들이 프로젝트에서 협업할 수 있도록 도와준다.
GIT: 분산형 버전 관리 시스템 (Version Control System)의 한 종류, 빠른 수행 속도에 중점.
프로젝트를 진행할 때,
'project.ipynb' 라고 저장을 했다가 수정을 하면서
'project_final.ipynb' 로 저장하고 또 수정을 거치면서
'project_final_final.ipynb' ... 로 수정을 하게 되는 경우가 있을 것인데,
이처럼 파일을 복사, 백업, 저장 등을 하는 과정을 버전 관리라고 한다.
버전 관리 시스템은 파일변화를 시간에 따라 기록했다가 나중에
특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다.
소스 코드를 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에 작업, 병렬 개발이 가능
(브랜치를 통해 개발한 뒤, 본 프로그램에서 합치는 방식(Merge)으로 개발을 진행할 수 있다.)
분산 버전 관리이기 때문에 인터넷이 연결되어 있지 않아도 개발이 가능하고,
중앙 저장소가 날아가 버려도 원상복구 가능

- 스냅샷
GIT 의 핵심 동작 원리는 '스냅샷'에 근거한다.
다른 버전 관리 시스템이 파일의 변경 부분만을 추적('델타'라고 한다.)하는 데 반해,

GIT은 시간 순서에 따른 파일의 전체 상태를 '스냅샷'으로 캡쳐한다.
즉, 특정 시점에서의 전체 모습을 기록하여 저장하고 있는 것이다.

- 동작 흐름
수정 (Modifiy) : 작업 디렉토리에서 파일을 수정
스테이지 (Stage) : 수정한 파일 중 커밋할 것들을 스테이징 영역에 추가
커밋 (Commit) :
스테이징 영역에 추가된 변경사항들을 실제로 저장(커밋)하여 GIT 디렉토리에 기록