학습 자료

첫 저장소 만들기 — 폴더에 CCTV 를 답니다


Article

준비가 끝났습니다. 깃은 깔았고, 이름과 메일도 넣었고, 검은 창도 다룰 줄 압니다. 이번 시간에 드디어 깃 명령어를 처음 칩니다.

칠 명령어는 딱 한 줄입니다. git init 입니다.

폴더에 CCTV 를 답니다

가게에 CCTV 를 단다고 생각해 봅니다. CCTV 를 달았다고 가게가 달라지지는 않습니다. 진열대도 그대로고, 물건도 그대로고, 손님도 평소처럼 드나듭니다. 달라지는 건 하나입니다. 이제 이 안에서 일어나는 일이 기록될 수 있는 상태가 됐다는 것입니다.

git init 이 하는 일이 정확히 이겁니다. 폴더 하나를 지정해서 "여기 안에서 벌어지는 일은 앞으로 내가 지켜본다"고 깃에게 알려주는 것입니다. 파일이 사라지지도, 이름이 바뀌지도 않습니다.

git init 을 치면 폴더가 어떻게 달라지나

치기 전 — 그냥 폴더

  • 파일을 만들고 고치고 지운다
  • 고치면 이전 내용은 그냥 사라진다
  • 어제 뭘 고쳤는지 알 방법이 없다
  • 깃은 이 폴더를 모른다

치고 난 뒤 — 저장소

  • 파일을 만들고 고치고 지운다 (똑같다)
  • 고치기 전 내용을 남겨둘 수 있다
  • 언제 뭘 고쳤는지 물어볼 수 있다
  • 깃이 이 폴더를 지켜본다
쓰는 방법은 하나도 안 바뀐다. 남길 수 있게 될 뿐이다

3강에서 나온 단어를 여기서 다시 만납니다. 이렇게 깃이 지켜보는 폴더를 저장소라고 부릅니다. 창고 안의 칸 하나입니다. 지금 만드는 건 내 컴퓨터 안에 있는 저장소고, 14강에서 이걸 깃허브의 칸과 연결하게 됩니다.

여기서 짚어둘 게 하나 있습니다. 저장소는 프로그램 안에 만드는 게 아닙니다. 어떤 폴더든 저장소가 될 수 있습니다. 지금 쓰고 있는 문서 폴더도, 나중에 만들 프로젝트 폴더도 마찬가지입니다. 깃은 폴더를 새로 만들어 주지도, 옮겨 주지도 않습니다. 이미 있는 폴더에 붙는 물건입니다. 그래서 3강에서 말한 "책상"이 계속 내 자리에 있는 것입니다.

연습할 폴더를 하나 만듭니다

기존 작업 폴더에 바로 치지 않고, 연습용 폴더를 새로 만듭니다. 처음이니 잘못 쳐도 지우고 다시 하면 되는 곳에서 하는 게 낫습니다.

폴더 만들고 그 안에서 창 열기
  1. 01

    바탕화면에 폴더를 하나 만듭니다

    이름은 git-study 로 합니다. 한글과 띄어쓰기를 넣지 않습니다. 나중에 경로를 칠 때 번거로워집니다

  2. 02

    그 폴더를 두 번 눌러 안으로 들어갑니다

    폴더 안이 비어 있는 화면이어야 합니다

  3. 03

    빈 곳에 마우스 오른쪽 버튼을 누릅니다

    4강에서 본 Open Git Bash here 를 누릅니다

  4. 04

    프롬프트를 확인합니다

    ~/Desktop/git-study 처럼 폴더 이름이 보이면 제자리입니다. 안 보이면 cd 로 옮겨갑니다

네 번째 단계를 건너뛰지 않는다. 위치 확인이 이 강의에서 제일 자주 틀리는 자리다

git init 을 칩니다

위치를 확인했으면 한 줄 칩니다.

Git Bash
  • $ git init
  • Initialized empty Git repository in C:/Users/gildong/Desktop/git-study/.git/

Initialized empty Git repository — 빈 저장소를 만들었다는 뜻입니다. 그 뒤에 붙은 경로가 중요합니다. 내가 의도한 폴더가 맞는지 여기서 확인합니다. 엉뚱한 경로가 찍혔다면 다른 폴더에서 친 것입니다.

깃 버전에 따라 이 줄 앞뒤로 hint: 로 시작하는 영어 문장이 여러 줄 나오기도 합니다.

폴더에 뭐가 생겼나

탐색기로 폴더를 다시 봐도 여전히 비어 보입니다. 그런데 터미널에서 -a 를 붙여 목록을 보면 다릅니다.

Git Bash
  • $ ls
  • $ ls -a
  • ./ ../ .git/

ls 는 아무것도 안 보여주고, ls -a.git/ 을 보여줍니다. 이름이 점으로 시작하는 것은 숨김 파일이라 ls 가 기본으로 빼고 보여주기 때문입니다. -a 는 all 의 줄임말로, 숨긴 것까지 다 보여달라는 뜻입니다.

.git 폴더가 CCTV 본체입니다. 앞으로 남기는 기록이 전부 여기 들어갑니다.

지금 폴더 안의 모습
  • git-study/내가 만든 폴더. 여기가 저장소다
    • .git/git init 이 만든 것. 기록이 쌓이는 곳
    • (내가 만들 파일들)memo.txt 를 여기 만든다
저장소 = 내 폴더 + .git. 이 둘이 한 몸이다

실습 파일을 만듭니다

이 편에서 계속 쓸 파일을 하나 만듭니다. 이 파일이 20강까지 따라다닙니다.

memo.txt 만들기
  1. 01

    폴더 안 빈 곳에 마우스 오른쪽 버튼

    새로 만들기 → 텍스트 문서를 고릅니다

  2. 02

    이름을 memo.txt 로 합니다

    확장자가 안 보이는 설정이면 memo 까지만 치면 됩니다. memo.txt.txt 가 되지 않게 주의합니다

  3. 03

    파일을 열고 한 줄 씁니다

    내용은 안녕하세요 한 줄이면 충분합니다

  4. 04

    저장하고 닫습니다

    저장을 빠뜨리는 일이 정말 흔합니다. 저장하지 않으면 깃은 빈 파일로 봅니다

이 편은 코드를 쓰지 않는다. 파일 한 줄 고치고 저장하는 게 실습의 전부다

깃이 알아챘는지 확인합니다

파일을 만들었으니 CCTV 화면을 한 번 봅니다. git status 입니다.

Git Bash
  • $ git status
  • On branch master
  • No commits yet
  • Untracked files:
  • (use "git add <file>..." to include in what will be committed)
  • memo.txt
  • nothing added to commit but untracked files present (use "git add" to track)

영어가 여러 줄이라 당황스럽지만, 지금 볼 것은 딱 한 줄입니다. memo.txt 라는 이름이 목록에 올라와 있다는 것. 깃이 이 파일의 존재를 알아챘다는 뜻입니다.

Untracked 는 "아직 기록 대상에 넣지 않았다"는 뜻입니다. 알아채기는 했는데 아직 찍지는 않은 상태입니다. 이 상태를 어떻게 넘기는지가 다음 강의 내용입니다. 지금은 여기까지만 확인하고 넘어갑니다.

정리하면

  • git init폴더에 CCTV 를 다는 일입니다. 폴더 쓰는 방법은 하나도 안 바뀝니다
  • 깃이 지켜보는 폴더를 저장소라고 부릅니다. 저장소 = 내 폴더 + .git
  • 명령을 치기 전에 프롬프트로 위치를 먼저 확인합니다. 결과에 찍힌 경로로 한 번 더 확인합니다
  • .git 은 숨김 폴더라 ls -a 로만 보입니다. 열지도 지우지도 않습니다
  • 이 CCTV 는 자동 녹화가 아닙니다. 만들어 두기만 해서는 아무것도 안 남습니다
  • git status 에 파일 이름이 Untracked 로 올라오면 깃이 알아챈 것입니다

Part 1 이 끝났습니다. 여기까지 설치 · 가입 · 터미널 · 저장소 만들기를 마쳤습니다. 준비 과정이라 밋밋했지만, 여기서 빠뜨린 게 있으면 뒤에서 반드시 걸립니다.

다음 6강부터 Part 2 입니다. 방금 본 Untracked 를 넘겨서 기록을 실제로 남깁니다. 인터넷 쇼핑에 비유하면 장바구니에 담고 결제하는 것과 같은 두 단계인데, 깃은 이걸 반드시 나눠서 시킵니다. 왜 굳이 두 번 시키는지 이해하려고, 일부러 담지 않고 결제부터 해보며 한 번 막혀보겠습니다.

첫 저장소 만들기 — 폴더에 CCTV 를 답니다 — 디코드랩(DCODELAB)