저장소와 세 개의 공간
저장소를 만들거나 복제하고, 작업 디렉터리 · 스테이징 · 저장소라는 세 공간을 구분합니다. 이 구분을 못 하면 이후 모든 명령이 헷갈립니다.
학습 목표
- 빈 폴더를 로 만들 수 있다
- 남의 저장소를 로 할 수 있다
- 세 공간 사이에서 파일이 어떻게 움직이는지 그림으로 설명할 수 있다
저장소를 얻는 방법은 두 가지입니다. 내 폴더를 저장소로 만드는 git init 과, 이미 있는 저장소를 통째로 가져오는 git clone 입니다. 둘 다 실행하고 나면 폴더 안에 .git 이라는 가 생깁니다. 이 폴더가 저장소의 본체이며, 모든 과 설정이 여기에 들어 있습니다. 이 폴더를 지우면 이력이 전부 사라지고, 이 폴더만 있으면 해 둔 파일은 언제든 되살릴 수 있습니다(커밋하지 않은 변경은 되살아나지 않습니다).
을 쓸 때는 파일이 세 공간 중 어디에 있는지를 늘 의식해야 합니다. 는 지금 로 보고 있는 실제 파일입니다. (index)은 "이번 커밋에 포함할 것"으로 골라 둔 대기실입니다. 저장소는 커밋으로 확정되어 이력에 박힌 곳입니다. 파일은 add 로 작업 디렉터리에서 스테이징으로, commit 으로 스테이징에서 저장소로 넘어갑니다.
스테이징이라는 중간 단계가 있는 이유는 커밋을 골라 담기 위해서입니다. 파일 다섯 개를 고쳤어도, 그중 서로 관련된 두 개만 골라 하나의 커밋으로 만들 수 있습니다. 이 능력이 나중에 이력을 읽기 좋게 만들고, 문제가 생겼을 때 원인 커밋을 빨리 찾게 해 줍니다.
쉽게 이해하기
여행 짐을 싸는 장면을 떠올려 보세요. 작업 디렉터리는 옷이 널린 내 방, 스테이징 영역은 고른 것만 넣는 열린 여행 가방, 저장소는 이름표를 붙여 봉한 상자입니다. git add 는 가방에 넣는 일이고, git commit 은 상자를 봉하는 일입니다.
이 단계에서 익히는 명령어
눈으로 읽지 말고 에 직접 쳐 보세요. 손이 기억해야 실무에서 나옵니다.
git init- 지금 폴더를 새 저장소로 만듭니다.
.git이 생깁니다. git clone <URL>- 를 통째로 복제합니다. 이력까지 전부 따라옵니다.
git status- 세 공간의 현재 상태를 보여 줍니다. 막히면 항상 이걸 먼저 칩니다.
ls -a- 숨김 파일까지 보여 줍니다.
.git이 정말 생겼는지 눈으로 확인하세요.
자주 하는 실수와 고치는 법
홈 폴더처럼 엉뚱한 곳에서 git init 을 실행해, 그 아래 모든 파일이 저장소에 들어가 버리는 실수. 먼저 pwd(지금 있는 폴더를 보여 주는 명령)로 위치를 확인합니다. 이미 그랬다면 그 폴더에서 rm -rf .git 으로 그곳에 생긴 .git 폴더만 지웁니다. 내 파일은 그대로 남습니다.
스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.
이 단계를 이해한 것으로 표시할까요?
아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.
이해한 것으로 표시했어요
스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.