저장소와 세 개의 공간
저장소를 만들거나 복제하고, 작업 디렉터리 · 스테이징 · 저장소라는 세 공간을 구분합니다. 이 구분을 못 하면 이후 모든 명령이 헷갈립니다.
학습 목표
- 빈 폴더를 저장소로 만들 수 있다
- 남의 저장소를 내 컴퓨터로 복제할 수 있다
- 세 공간 사이에서 파일이 어떻게 움직이는지 그림으로 설명할 수 있다
저장소를 얻는 방법은 두 가지입니다. 내 폴더를 저장소로 만드는 git init 과, 이미 있는 저장소를 통째로 가져오는 git clone 입니다. 둘 다 실행하고 나면 폴더 안에 .git 이라는 숨김 디렉터리가 생깁니다. 이 폴더가 저장소의 본체이며, 모든 이력과 설정이 여기에 들어 있습니다. 이 폴더를 지우면 이력이 전부 사라지고, 이 폴더만 있으면 나머지 파일은 언제든 복원됩니다.
GIT 을 쓸 때는 파일이 세 공간 중 어디에 있는지를 늘 의식해야 합니다. 작업 디렉터리는 지금 편집기로 보고 있는 실제 파일입니다. 스테이징 영역(index)은 "이번 커밋에 포함할 것"으로 골라 둔 대기실입니다. 저장소는 커밋으로 확정되어 이력에 박힌 곳입니다. 파일은 add 로 작업 디렉터리에서 스테이징으로, commit 으로 스테이징에서 저장소로 넘어갑니다.
스테이징이라는 중간 단계가 있는 이유는 커밋을 골라 담기 위해서입니다. 파일 다섯 개를 고쳤어도, 그중 서로 관련된 두 개만 골라 하나의 커밋으로 만들 수 있습니다. 이 능력이 나중에 이력을 읽기 좋게 만들고, 문제가 생겼을 때 원인 커밋을 빨리 찾게 해 줍니다. 다른 버전 관리 도구에 없는 GIT 의 강점입니다.
이 단계에서 익히는 명령어
눈으로 읽지 말고 터미널에 직접 쳐 보세요. 손이 기억해야 실무에서 나옵니다.
git init- 지금 폴더를 새 저장소로 만듭니다. `.git` 이 생깁니다.
git clone <URL>- 원격 저장소를 통째로 복제합니다. 이력까지 전부 따라옵니다.
git status- 세 공간의 현재 상태를 보여 줍니다. 막히면 항상 이걸 먼저 칩니다.
ls -a- 숨김 파일까지 보여 줍니다. `.git` 이 정말 생겼는지 눈으로 확인하세요.