초등학생에게 Git을 설명해본다면? (Git 1편)

eddy_song·2022년 2월 24일
53

1 Concepts in 3 Levels

목록 보기
1/4
post-thumbnail

1 Concept in 3 Levels
Git의 기초 개념을 각각 초등학생, 대학생, 개발자의 눈높이에 맞춰서 설명해보자.

Git이라는 버전 관리 시스템은 개발자라면 반드시 배워야 합니다.
하지만 한번에 다 소화하기엔 복잡하고 어렵죠.

하지만 초등학생도 이해할 수 있게 단순화시킨 설명을 들어보고,
대학생, 개발자로 차츰 더 수준을 높여간다면 훨씬 더 이해가 쉽지 않을까요?


설명할 개념

  • 버전 관리란?
  • 중앙 버전 관리와 분산 버전 관리
  • Git의 Stage와 Commit
  • Git은 차이점이 아닌 스냅샷을 저장

👦 초등학생에게 설명하기

버전 관리 시스템이란?

🧑‍🏫 Git이라고 들어본 적 있어?

👦 깃이요..? 깃발?

🧑‍🏫 깃발은 아니고... Git이 뭐냐면, 프로그래머들이 버전 관리를 할 때 쓰는 프로그램이야.

👦 버전 관리가 뭔데요?

🧑‍🏫 학교에서 너한테 미술 숙제를 내줬다고 생각해보자.

엄청 큰 종이를 주고, 여기다 ‘너가 살고 싶은 마을’ 뭐 이런 걸 그리라고 했어.

겨울방학 동안 만들어가지고 개학하면 내야하는 거야.

(출처: 엘리 블로그)

👦 왜 숙제 얘기를 해요 갑자기. 킹받네.

🧑‍🏫 (...) 그냥 생각만 해보는 거야.
근데 문제는 이걸 너가 방학 내내 그릴 건데. 이걸 그리는 과정을 기록을 해두고 싶은 거야.

그럼 어떻게 해야할까?

👦 기록? 그냥 내면 되는 거 아닌가. -ㅅ- 사진이나 영상 같은 거 찍어두면 되겠죠.

🧑‍🏫 그치. 그림 그린 걸 중간에 사진으로 찍으면 되겠지?

사진에다가 이름이랑 날짜를 같이 쓴 다음에 앨범에 넣어두는 거야.
나중에 쭉 보고, 너 그림이 어떻게 계속 발전했는지 알 수 있잖아.

👦 그렇죠.

🧑‍🏫 이게 아주 기초적인 버전 관리 시스템이야.
너가 만들어낸 중간 과정을 기록하는 거지.

🧑‍🏫 사실 이 정도면 되게 간단한데, 만약에 숙제를 친구랑 같이 해야한다면 어떨까?

👦 킹받죠.

🧑‍🏫 아니 그게 아니라...;;

🧑‍🏫 하나의 큰 종이에 너랑 민수랑 지수랑 같이 그려야 되는 거야.
서로가 그린 그림이 모여서 하나의 그림이 되도록.

👦 같이 모여서 그리면 되죠.

🧑‍🏫 근데 요즘 코로나 시국이잖아. 그래서 같이 그릴 수가 없어. 그리고 방학 숙제를 하는 시간도 다 다르단 말이야.
너 방학 숙제하면 언제 하니?

👦 개학 전 주에 몰아서 해요.

🧑‍🏫 그럴 줄 알았어. 근데 같은 조 지수는 성실해가지고 매일매일 해야한단 말이야.

👦 그런 애가 있어요...? 그러면 어떻게 해요.

🧑‍🏫 이 때 버전 관리 시스템을 사용하는 거지.
각자 집에서 그림을 그리면서 그걸 매일매일 사진으로 찍는 거야. 사진을 서로서로 공유해.
그러면 모두가 전체 그림 진행 상황을 알 수 있겠지?

🧑‍🏫 버전 관리 시스템을 쓰는 이유는 기록도 있지만,
이렇게 공유를 하고 같이 숙제를 할 수 있다는 점이 커.

👦 오...

중앙 버전 관리와 분산 버전 관리

🧑‍🏫 근데 여기서도 2가지 방식이 있어.

한 명을 조장으로 정하는 거야.

조장 집에다가 사진 보관하는 앨범을 만들어둔 다음에,
각자 중간중간 사진을 찍으면 바로 조장 집에다가 갖다둘거야.

그러면 이제 조장 집에 있는 사진 앨범만 보면 전체 그림이 계속 보이겠지?

👦 아 그림을 합쳐야 되니까 누구 한명 사진을 다 모을 사람을 정하는 거네요.

🧑‍🏫 그치. 이걸 중앙 버전 관리라고 해. 사진 보관함이 하나인 거야.

🧑‍🏫 근데 이게 은근 불편한 점이 많아.

일단 매번 사진을 조장한테 보내주는 게 귀찮잖아.
내가 여태까지 했던 기록을 볼려면 조장이 또 내 그림 사진들을 보내줘야 해.

🧑‍🏫 또 다른 방식은 사진 보관 앨범을 조장 집에만 두는 게 아니라, 모든 사람 집에다가 다 두는 거야.

👦 그럼 저도 앨범이 있는 거에요?

🧑‍🏫 그렇지. 너는 너 집에 있는 앨범에다가 계속 사진을 찍어서 보관해.
하지만 서로 기록을 맞춰야 하니까, 한번씩 조장네 집에 들러서 서로 앨범을 업 데이트하는 거야.

🧑‍🏫 너가 없는 사진은 조장네 집에 가서 복사해오고,
조장네 집에 없는 사진은 너가 복사해올 거야.
이렇게 하면 모든 친구들이 자기 집에서 전체 기록을 볼 수 있게 되지.
앨범을 다 나눠가졌다고 해서 '분산' 버전 관리라고 해.

👦 아싸, 나도 앨범 생겼다.

🧑‍🏫 프로그래머들은 이런 상황이 되게 많아.
보통 프로그램 하나에 여러명의 프로그래머들이 쓴 코드가 들어가거든.
한 종이에 다같이 그림을 그려야 되는 거지.

그래서 요즘은 다 앨범을 나눠가지는 방식이야.

🧑‍🏫 이렇게 각자 앨범에 사진을 찍어서 기록해두고,
그걸 서로서로 동기화하는 분산 버전 관리 시스템을 쓴다는 말이지.

그 중에 가장 유명한 게 뭐다?
바로 git이다!

Git에서 버전 기록하기

👦 오... git을 어떻게 쓰는데요?

🧑‍🏫 컴퓨터에 보면 폴더 안에 파일들이 있지?
git을 시작하면 어떤 폴더 안에 들어있는 파일 전체의 사진을 찍어줘.
폴더나 파일 안에 내용 같은 게 캡쳐가 되는 거야.

👦 캡쳐 알죠. 게임하다가 캡쳐하잖아요.

🧑‍🏫 그지. 근데 캡쳐를 할 때 캡쳐 범위를 선택할 수가 있어.

프로그램 안에 ‘무대(Stage)’라는 게 있거든?
여기다가 캡쳐할 파일들을 먼저 추가하고, 캡쳐를 누르면 ‘무대’ 위에 있는 파일들만 찍히게 돼.

👦 무대에 올라간 인싸들만 사진을 찍어주는 거네요. 아싸들은 무대 밑에 있는 거고.

🧑‍🏫 아니;; 아싸라서 그런게 아니고... 굳이 기록 안하고 싶은 파일이 있을 수도 있으니까.

🧑‍🏫 이렇게 캡쳐를 여러번 했을 거 아니야?
이전에 캡쳐를 했는데 내용이 바뀐 게 없는 애들은 ‘이전에 찍은 캡쳐에 있음’ 이렇게 표시를 해줘.

계속 똑같은 내용이 캡쳐되면 낭비니까.
이전에 캡쳐를 한번도 안했거나, 내용이 바뀐 게 있는 파일들만
캡쳐를 해서 사진으로 저장을 하는 거지.

👦 어디에 저장을 하는데요?

🧑‍🏫 git으로 사진을 찍으면 .git이라는 폴더에 알아서 자동으로 저장돼.

이 폴더가 앨범 역할을 하는 거야. ‘이 사진은 저 사진 뒤에 오는 사진이다’ ‘찍은 사람은 누구다' ‘이런 내용이다' 설명을 붙여서 저장해 놓지.

근데 .git 폴더는 숨김 폴더라서 그냥 컴퓨터에서는 안보여.

👦 아 숨김 폴더 알죠 ㅎㅎ

🧑‍🏫 너가 숨김 폴더를 어떻게 알아? 뭘 숨겨본 거야?

👦 (...)

👦 이제 git이 뭔지 알았어요!

근데 아까 사진을 찍어가지고 여러명이서 공유한다면서요.
그건 어떻게 하는 거에요?

🧑‍🏫 그건 일단 가지치기랑 합치기를 알고나서 해야하는데,
다음에 자세히 알아보도록 하자.

관련 링크

🔗 초등학생에게 Git을 설명해본다면? (Git 1편)
🔗 대학생에게 Git을 설명해본다면? (Git 1편)
🔗 개발자에게 Git을 설명해본다면? (Git 1편)

profile
개발 지식을 쉽고 재미있게 설명해보자.

11개의 댓글

comment-user-thumbnail
2022년 2월 26일

설명 잘하시네요!

1개의 답글
comment-user-thumbnail
2022년 3월 1일

왜 설명을 작성하시게된건지도 궁금하네요
공부몯적이신가여???

1개의 답글
comment-user-thumbnail
2022년 3월 2일

비유 엄청 잘하시네요 ㄷㄷ 덕분에 시간가는줄도 모르고 읽었습니다! ㅎㅎ

1개의 답글
comment-user-thumbnail
2022년 3월 3일

진짜 글을 너무 잘쓰신다..!

1개의 답글
comment-user-thumbnail
2022년 3월 5일

선생님 그래서 깃이 뭐예요? 다 까먹었어요...

답글 달기
comment-user-thumbnail
2022년 3월 7일

이것은 내가 완전히 읽기를 좋아했던 또 다른 훌륭한 게시물입니다. 이런 것을 목격할 기회가 매일 주어지는 것은 아닙니다. free games online subway surfers

1개의 답글