첫 저장소 만들기 — 폴더에 CCTV 를 답니다
Article
준비가 끝났습니다. 깃은 깔았고, 이름과 메일도 넣었고, 검은 창도 다룰 줄 압니다. 이번 시간에 드디어 깃 명령어를 처음 칩니다.
칠 명령어는 딱 한 줄입니다. git init 입니다.
폴더에 CCTV 를 답니다
가게에 CCTV 를 단다고 생각해 봅니다. CCTV 를 달았다고 가게가 달라지지는 않습니다. 진열대도 그대로고, 물건도 그대로고, 손님도 평소처럼 드나듭니다. 달라지는 건 하나입니다. 이제 이 안에서 일어나는 일이 기록될 수 있는 상태가 됐다는 것입니다.
git init 이 하는 일이 정확히 이겁니다. 폴더 하나를 지정해서 "여기 안에서 벌어지는 일은 앞으로 내가 지켜본다"고 깃에게 알려주는 것입니다. 파일이 사라지지도, 이름이 바뀌지도 않습니다.
git init 을 치면 폴더가 어떻게 달라지나치기 전 — 그냥 폴더
- 파일을 만들고 고치고 지운다
- 고치면 이전 내용은 그냥 사라진다
- 어제 뭘 고쳤는지 알 방법이 없다
- 깃은 이 폴더를 모른다
치고 난 뒤 — 저장소
- 파일을 만들고 고치고 지운다 (똑같다)
- 고치기 전 내용을 남겨둘 수 있다
- 언제 뭘 고쳤는지 물어볼 수 있다
- 깃이 이 폴더를 지켜본다
3강에서 나온 단어를 여기서 다시 만납니다. 이렇게 깃이 지켜보는 폴더를 저장소라고 부릅니다. 창고 안의 칸 하나입니다. 지금 만드는 건 내 컴퓨터 안에 있는 저장소고, 14강에서 이걸 깃허브의 칸과 연결하게 됩니다.
여기서 짚어둘 게 하나 있습니다. 저장소는 프로그램 안에 만드는 게 아닙니다. 어떤 폴더든 저장소가 될 수 있습니다. 지금 쓰고 있는 문서 폴더도, 나중에 만들 프로젝트 폴더도 마찬가지입니다. 깃은 폴더를 새로 만들어 주지도, 옮겨 주지도 않습니다. 이미 있는 폴더에 붙는 물건입니다. 그래서 3강에서 말한 "책상"이 계속 내 자리에 있는 것입니다.
연습할 폴더를 하나 만듭니다
기존 작업 폴더에 바로 치지 않고, 연습용 폴더를 새로 만듭니다. 처음이니 잘못 쳐도 지우고 다시 하면 되는 곳에서 하는 게 낫습니다.
- 01
바탕화면에 폴더를 하나 만듭니다
이름은
git-study로 합니다. 한글과 띄어쓰기를 넣지 않습니다. 나중에 경로를 칠 때 번거로워집니다 - 02
그 폴더를 두 번 눌러 안으로 들어갑니다
폴더 안이 비어 있는 화면이어야 합니다
- 03
빈 곳에 마우스 오른쪽 버튼을 누릅니다
4강에서 본 Open Git Bash here 를 누릅니다
- 04
프롬프트를 확인합니다
~/Desktop/git-study처럼 폴더 이름이 보이면 제자리입니다. 안 보이면cd로 옮겨갑니다
git init 을 칩니다
위치를 확인했으면 한 줄 칩니다.
- $ git init
- Initialized empty Git repository in C:/Users/gildong/Desktop/git-study/.git/
Initialized empty Git repository — 빈 저장소를 만들었다는 뜻입니다. 그 뒤에 붙은 경로가 중요합니다. 내가 의도한 폴더가 맞는지 여기서 확인합니다. 엉뚱한 경로가 찍혔다면 다른 폴더에서 친 것입니다.
깃 버전에 따라 이 줄 앞뒤로 hint: 로 시작하는 영어 문장이 여러 줄 나오기도 합니다.
폴더에 뭐가 생겼나
탐색기로 폴더를 다시 봐도 여전히 비어 보입니다. 그런데 터미널에서 -a 를 붙여 목록을 보면 다릅니다.
- $ ls
- $ ls -a
- ./ ../ .git/
ls 는 아무것도 안 보여주고, ls -a 는 .git/ 을 보여줍니다. 이름이 점으로 시작하는 것은 숨김 파일이라 ls 가 기본으로 빼고 보여주기 때문입니다. -a 는 all 의 줄임말로, 숨긴 것까지 다 보여달라는 뜻입니다.
이 .git 폴더가 CCTV 본체입니다. 앞으로 남기는 기록이 전부 여기 들어갑니다.
- git-study/
- .git/
- (내가 만들 파일들)
실습 파일을 만듭니다
이 편에서 계속 쓸 파일을 하나 만듭니다. 이 파일이 20강까지 따라다닙니다.
memo.txt 만들기- 01
폴더 안 빈 곳에 마우스 오른쪽 버튼
새로 만들기 → 텍스트 문서를 고릅니다
- 02
이름을
memo.txt로 합니다확장자가 안 보이는 설정이면
memo까지만 치면 됩니다.memo.txt.txt가 되지 않게 주의합니다 - 03
파일을 열고 한 줄 씁니다
내용은
안녕하세요한 줄이면 충분합니다 - 04
저장하고 닫습니다
저장을 빠뜨리는 일이 정말 흔합니다. 저장하지 않으면 깃은 빈 파일로 봅니다
깃이 알아챘는지 확인합니다
파일을 만들었으니 CCTV 화면을 한 번 봅니다. git status 입니다.
- $ 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 를 넘겨서 기록을 실제로 남깁니다. 인터넷 쇼핑에 비유하면 장바구니에 담고 결제하는 것과 같은 두 단계인데, 깃은 이걸 반드시 나눠서 시킵니다. 왜 굳이 두 번 시키는지 이해하려고, 일부러 담지 않고 결제부터 해보며 한 번 막혀보겠습니다.