본문으로 건너뛰기
← 블로그로 돌아가기
개발>개발환경
GitGitHub입문회고

2021년, 중학생이 정리한 Git & GitHub 입문 노트

5분 읽기

2021년 5월 23일. 중학생이던 저는 아이패드를 꺼내 Git이라는 걸 처음 공부했습니다. 노션에 정리하고, 아이패드에 손글씨로 다이어그램을 그렸습니다. 지금으로부터 5년 전 일입니다.

지금 보면 어색한 부분도 있고, 설명이 빠진 부분도 있습니다. "get clone"이라고 오타를 낸 것도 보입니다. 그래도 그때의 기록이 지금의 저를 만들었다고 생각해서, 원본의 느낌을 최대한 살려 블로그로 옮겨봤습니다.

아래는 당시 아이패드에 손으로 직접 정리한 필기입니다.

아이패드 Git 명령어 필기 — init, push, pull, clone 흐름 정리

아이패드 Git 개념 필기 — Merge conflict와 Branch 나뭇가지 비유

이 손글씨 노트를 바탕으로, 아래에 내용을 다시 정리했습니다.


Git과 GitHub, 뭐가 다른가

처음 Git을 접했을 때 가장 헷갈렸던 게 이 둘의 차이였습니다.

Git은 소스코드나 문서의 버전을 관리하는 도구입니다. 로컬 컴퓨터 안에서 코드의 변경 이력을 추적합니다. GitHub은 Git으로 관리한 코드를 인터넷에 올리고 다른 사람과 공유할 수 있는 플랫폼입니다.

한 줄로 정리하면 — Git은 도구, GitHub은 저장 공간입니다.


Repository 만들기

GitHub에서 새 repository를 만들 때 두 가지를 선택해야 합니다.

  • Public: 누구나 볼 수 있는 저장소. contributions 잔디도 여기에 반영됩니다.
  • Private: 자신과 초대한 사람만 접근 가능. 잔디에는 반영되지 않습니다.

특별한 이유가 없다면 public으로 만드는 게 좋습니다. 초록 잔디를 포기할 필요는 없으니까요.

Initialize this repository with a README 옵션도 있는데, 여기서 README를 생성하느냐 안 하느냐에 따라 이후 작업 흐름이 달라집니다.


README 없이 시작하는 경우

1. Working Directory 생성

작업할 폴더를 하나 만듭니다. 터미널을 열고 해당 폴더로 이동합니다.

cd ~/Desktop/dev

2. Git 계정 설정

GitHub 계정 정보를 로컬에 등록합니다.

git config --global user.name "닉네임"
git config --global user.email "이메일"

3. Git 저장소 초기화

git init으로 해당 폴더를 Git 저장소로 만듭니다.

git init

이 명령을 실행하면 .git 폴더가 생성됩니다. 이제 이 폴더 안의 파일들을 버전 관리할 수 있습니다.

4. 파일 추가 (git add)

Staging Area로 파일을 보냅니다.

git add *          # 모든 파일 추가
git add README.md  # 특정 파일만 추가

5. 커밋 (git commit)

변경 사항을 로컬 저장소에 기록합니다.

git commit -m "첫 번째 커밋"

커밋 메시지는 나중에 보고도 어떤 변경인지 알 수 있게 적는 게 좋습니다. 중학생 때도 이건 중요하다고 적어놨더군요.

6. 원격 저장소 연결

처음 한 번만 실행하면 됩니다.

git remote add origin "원격 저장소 URL"

7. 푸시 (git push)

로컬의 커밋을 GitHub에 올립니다.

git push -u origin master  # 첫 푸시
git push                    # 이후

README를 미리 만든 경우

GitHub에서 README를 함께 생성하면 git configgit init 과정이 필요 없습니다.

대신 git clone으로 시작합니다.

git clone "원격 저장소 URL"

git clone은 원격 저장소의 모든 파일을 로컬로 가져오면서, 동시에 git init 효과까지 포함합니다. 클론 후에는 바로 git add, git commit, git push 흐름으로 작업하면 됩니다.


팀원과 협업할 때 — git pull

팀원이 원격 저장소에 merge한 파일을 가져올 때는 git pull을 씁니다.

git pull

한 문장으로 정리하면: 내 Working Directory에는 없는 파일이 원격 저장소에 존재할 때 pull이 필요합니다.

충돌(conflict)이 발생하면 충돌 위치를 찾아서 해결(resolve)한 뒤 다시 pull하면 됩니다.


Merge Conflict — 아이패드 필기에 그린 그림

아이패드 필기를 보면, 두 사람이 각자 코드를 수정하고 합칠 때 충돌이 나는 상황을 그림으로 그려놨습니다. 파일 두 개가 화살표를 따라가다 빨간 충돌 마크에서 만나는 다이어그램입니다.

이걸 **Merge conflict(병합 충돌)**라고 합니다. 같은 파일의 같은 줄을 서로 다르게 수정했을 때 Git이 자동으로 합치지 못하는 상황입니다.


Branch — 나뭇가지

필기에 나뭇가지 그림을 그려놨더군요. 꽤 직관적인 비유였습니다.

Branch는 말 그대로 나뭇가지입니다. main이라는 줄기에서 새 가지를 뻗어서 작업하고, 다 되면 다시 줄기에 합칩니다. 2021년의 저는 이걸 "최초 branch → 이름에 의해 새 작업 → branch를 만듦"이라고 적어뒀습니다.

지금 돌아보면 핵심을 꽤 잘 잡았습니다.


돌아보며

2021년 5월 23일의 노트를 다시 읽었습니다. Staging AreaLocal Repository 같은 용어를 그때 나름대로 이해하려고 애쓴 흔적이 보입니다. "get clone"이라고 쓴 오타도, Push와 Pull을 빨간 펜으로 구분한 것도 전부 그때의 저입니다.

당시에는 Git이 왜 필요한지도 잘 몰랐습니다. 그냥 "개발자는 이걸 쓴다"는 말을 듣고 따라 해본 거였습니다. 5년이 지난 지금, 매일 Git을 쓰고 있습니다.

코딩을 처음 시작하는 분들에게 — 지금 이해가 안 되는 것도 일단 적어두세요. 5년 뒤에 블로그 글이 됩니다.

관련 포스트