보고서_최종_최종2_진짜최종 — 깃이 없으면 생기는 일
Article
첫 강의부터 명령어를 치지는 않습니다. 설치는 다음 강의에서 합니다.
대신 이번 시간에는 왜 이걸 배우는지만 확실히 하고 갑니다. 이유를 모른 채 명령어부터 외우면 사흘 뒤에 다 잊습니다. 반대로 "아 이래서 필요하구나"가 한 번 잡히면, 뒤에 나올 명령어들이 전부 그 자리에 붙습니다.
시작은 아주 익숙한 폴더 하나입니다.
이 폴더, 본 적 있을 겁니다
과제를 내거나 보고서를 쓰다가 폴더가 이렇게 되어본 적이 있을 겁니다.
| 파일 이름 | 언제 만든 건지 | 뭐가 다른지 |
|---|---|---|
| 보고서.docx | 월요일 | 처음 쓴 것 |
| 보고서_수정.docx | 화요일 | 기억 안 남 |
| 보고서_수정2.docx | 화요일 | 기억 안 남 |
| 보고서_최종.docx | 수요일 | 이게 최종이었음 |
| 보고서_최종2.docx | 목요일 | 최종이 아니었음 |
| 보고서_진짜최종.docx | 금요일 | 제출한 게 이건지 확실치 않음 |
웃기지만 실제로 이렇게 됩니다. 저도 그랬습니다. 그리고 이 방식은 나름대로 작동은 합니다. 파일을 복사해 두는 건 원시적이긴 해도 목적 자체는 맞습니다. 옛날 상태를 남겨두고 싶은 것이니까요.
문제는 이게 세 군데에서 반드시 무너진다는 데 있습니다.
- ① 뭐가 다른지 모른다
_최종과_최종2사이에 무엇을 고쳤는지 파일 이름은 알려주지 않는다 - ② 돌아갈 수 없다수요일 상태로 딱 되돌리고 싶은데, 그 이후 고친 것 중 살릴 것도 섞여 있다
- ③ 둘이 하면 즉시 터진다각자 고친
_최종두 개를 합칠 방법이 없다
세 번째가 특히 치명적입니다. 혼자 할 때는 파일 이름이 지저분한 정도로 끝나지만, 두 사람이 같은 파일을 각자 고쳐 오면 방법이 없습니다. 결국 한 명이 자기가 고친 걸 다시 손으로 옮겨 붙이게 됩니다. 팀 과제에서 한 번쯤 겪어봤을 겁니다.
게임 세이브 슬롯을 떠올려 봅니다
여기서 게임 이야기를 하나 하겠습니다. 이 편에서 배울 거의 모든 것이 이 비유 안에 들어 있습니다.
RPG 게임을 하다가 어려운 보스 앞에 도착했다고 해봅니다. 뭘 합니까. 세이브를 합니다. 그리고 보스에게 도전합니다. 죽으면 불러오기를 눌러서 보스 앞으로 돌아옵니다. 장비를 바꿔서 다시 도전합니다. 또 죽으면 또 불러옵니다.
여기서 중요한 건, 세이브가 있으니까 마음 놓고 이상한 시도를 해볼 수 있다는 점입니다. 세이브가 없는 게임이었다면 아무도 새 전략을 실험하지 않습니다. 죽으면 처음부터니까요.
보고서_최종2.docx
파일을 복사해 두는 방식
- 슬롯 이름이 곧 설명이라 길어진다
- 언제 왜 저장했는지 안 적힌다
- 슬롯이 늘수록 뭐가 뭔지 모른다
- 두 사람의 슬롯을 합칠 수 없다
세이브 슬롯
게임이 관리해 주는 방식
- 저장한 시각이 자동으로 붙는다
- "보스 직전" 처럼 메모를 남길 수 있다
- 목록에서 골라 그 시점으로 돌아간다
- 원본 파일은 하나뿐이라 안 지저분하다
깃은 정확히 이 세이브 기능을 아무 폴더에나 붙여주는 프로그램입니다.
폴더 하나를 깃에게 맡기면, 그때부터 "지금 이 상태 저장" 이라고 시킬 수 있습니다. 그 저장 하나하나를 깃에서는 커밋이라고 부릅니다. 이 편에서 앞으로 수십 번 나올 단어니까 여기서 한 번만 짚고 갑니다. 커밋 = 세이브 한 칸입니다.
세이브를 쌓으면 뭐가 달라지나
세이브가 하나둘 쌓이면 폴더는 이렇게 바뀝니다. 파일은 계속 보고서.docx 하나인데, 그 뒤에 기록이 줄줄이 달립니다.
이 상태에서 "화요일 상태 좀 보자" 하면 그 시점으로 돌아갈 수 있습니다. "수요일에 뭘 고친 거지" 하면 바뀐 줄만 딱 집어서 보여줍니다. 파일 이름을 하나도 건드리지 않고 말입니다.
실제로 깃에게 기록을 보여달라고 하면 이런 게 나옵니다. 아직 따라 칠 필요는 없습니다. 7강에서 직접 쳐봅니다.
- $ git log --oneline
- a3f9c21 제출본 - 오탈자 수정
- 7b2e4d8 3장 수치를 최신 자료로 교체
- c81a06f 목차 순서 정리
- e0d4b13 초안 작성
왼쪽의 알 수 없는 글자들은 각 세이브 칸에 자동으로 붙는 이름표입니다. 지금은 무시해도 됩니다. 볼 곳은 오른쪽입니다. 무엇을 왜 고쳤는지가 한글로 적혀 있습니다.
보고서_최종2.docx 라는 파일 이름이 절대 알려주지 못하던 정보가 여기에는 있습니다. 이게 버전 관리의 핵심입니다.
흔한 오해 두 가지
여기서 미리 털고 갈 오해가 둘 있습니다. 둘 다 나중에 사람을 헷갈리게 만드는 것들입니다.
그래서 이 편에서 뭘 하게 되나
26강짜리 여정입니다. 크게 다섯 덩어리로 갑니다.
- 01
Part 1 · 시작 (1~5강)
설치하고, 터미널을 열고, 첫 저장소를 만듭니다
- 02
Part 2 · 기록 (6~10강)
혼자서 커밋을 찍고, 읽고, 되돌립니다. 인터넷은 아직 안 씁니다
- 03
Part 3 · 마크다운 (11~13강)
깃허브에서 글을 쓰는 문법을 배웁니다. 노션에서도 그대로 씁니다
- 04
Part 4 · 깃허브 (14~20강)
인터넷에 올립니다. 20강에서 내 URL 이 열리는 페이지가 생깁니다
- 05
Part 5 · 협업 (21~26강)
브랜치와 충돌을 지나 남과 코드를 주고받습니다
끝까지 가면 손에 두 가지가 남습니다. 주소창에 쳐서 열리는 내 페이지 하나, 그리고 남과 주고받은 기록이 있는 깃허브 계정 하나입니다. 이력서에 링크로 붙일 수 있는 것들입니다.
한 가지 미리 말해둘 게 있습니다. 이 편에서는 코드를 한 줄도 쓰지 않습니다. 실습 파일은 메모장으로 여는 텍스트 파일 하나로 시작합니다. HTML 도 자바스크립트도 나오지 않습니다.
이유가 있습니다. 깃을 배우는데 코드까지 같이 씨름하면, 에러가 났을 때 그게 깃 문제인지 코드 문제인지 구분이 안 됩니다. 그래서 이 편은 깃 하나에만 집중하도록 일부러 파일을 단순하게 잡았습니다.
합니다
- 메모 파일 한 줄 고치고 저장하기
- 깃 명령어 직접 손으로 치기
- 일부러 에러를 내고 읽어보기
- 깃허브에 올리고 남과 주고받기
안 합니다
- HTML · CSS · 자바스크립트
- 깃 내부가 어떻게 도는가
- 고급 명령어
- 서버 · 배포 자동화
정리하면
- 파일 이름에
_최종을 붙여 버티는 방식은 뭐가 달라졌는지 모르고, 되돌릴 수 없고, 둘이 하면 터집니다 - 깃은 아무 폴더에나 게임 세이브 슬롯을 붙여주는 프로그램입니다. 이걸 버전 관리라고 부릅니다
- 세이브 한 칸을 커밋이라고 합니다. 파일은 하나로 유지되고 기록만 뒤로 쌓입니다
- 깃은 백업이 아닙니다. 자동이 아니라 직접 찍을 때만 남습니다
- 깃과 깃허브는 다른 물건입니다. 내 컴퓨터의 프로그램과 인터넷 서비스입니다
Part 1 이 시작됐습니다. 다음 2강에서는 깃을 실제로 설치하고, 설치 직후 반드시 해야 하는 설정 두 줄을 칩니다. 택배 송장에 보내는 사람 이름을 적는 일과 똑같은 작업입니다. 이걸 빼먹으면 나중에 커밋이 누가 찍은 건지 알 수 없게 되고, 19강에서 잔디가 안 심기는 원인이 되기도 합니다.