GitHub 입문 Part 1 — 기초와 워크플로

Git와 GitHub가 뭔지, 저장소를 어떻게 만들고, 코드를 어떻게 올리는지.
개발자가 아니어도 이해할 수 있는 눈높이로, 처음부터 차근차근 배웁니다.

진행률 0%

혹시 이런 상태인가요?

Git와 GitHub가 같은 건지 다른 건지 모르겠다
commit, push, pull이 뭔지 헷갈린다
브랜치가 왜 필요한지 이해가 안 된다
터미널 명령어가 무서워서 시작을 못 하고 있다
GitHub를 써야 한다고 하는데 도대체 어디서 시작해야 하는지 모르겠다

Git vs GitHub — 두 개념의 차이를 한 번에 정리

저장소 — repository가 뭔지, 로컬·원격의 차이

워크플로 — 수정 → commit → push 흐름을 단계별로

브랜치 — 왜 쓰는지, 어떻게 만드는지 비유로 이해

🐙 Git = 버전 관리 도구  |  GitHub = Git 저장소를 올려두는 서비스
섹션 A

Git vs GitHub — 무엇이 다른가

가장 먼저 이 둘의 차이를 명확히 구분해야 나머지가 쉬워집니다.

📸 비유로 이해하기 — 사진과 포토앨범

📷 Git = 사진 찍는 카메라
  • • 내 컴퓨터 안에 존재
  • • 파일 변경 이력을 찍어 저장
  • • 혼자 써도 작동 (인터넷 불필요)
  • • Linus Torvalds가 2005년 만든 도구
☁️ GitHub = 클라우드 포토앨범
  • • 인터넷 서버(클라우드)에 존재
  • • Git 이력을 온라인에 보관·공유
  • • 팀원과 함께 열람·수정 가능
  • • Microsoft가 운영하는 서비스
💡 Git 없이 GitHub는 쓸 수 없습니다. 하지만 Git만으로도 혼자 버전 관리는 가능합니다.

🔍 버전 관리가 왜 필요한가

Git가 없던 시절, 개발자들은 이렇게 작업했습니다:

# 과거 방식 — 파일 이름으로 버전 관리 report_final.docx report_final_진짜최종.docx report_final_진짜최종2.docx report_최최최종_이게맞아.docx ← 누구나 한 번쯤 겪어본 상황
1
Git 도입 후: 파일 이름이 하나라도 언제든 예전 버전으로 돌아갈 수 있습니다.
2
"누가 언제 뭘 바꿨나"가 commit 기록에 모두 남습니다.
3
실험적 변경을 branch로 분리해서, 메인 파일을 건드리지 않고 시도할 수 있습니다.

📊 Git · GitHub · GitLab · Bitbucket 차이

이름종류특징
Git도구 (소프트웨어)버전 관리 엔진 본체. 내 PC에 설치
GitHub서비스 (플랫폼)가장 큰 Git 호스팅. 오픈소스의 중심지
GitLab서비스 (플랫폼)CI/CD 강점. 기업 자체 서버 설치도 가능
Bitbucket서비스 (플랫폼)Atlassian 생태계(Jira, Confluence) 연동
💡 이 학습실은 GitHub 기준으로 설명합니다. 개념은 GitLab·Bitbucket도 동일합니다.

⚙️ Git 설치 및 초기 설정

# 1. 설치 확인 $ git --version git version 2.43.0 # 2. 사용자 정보 설정 (최초 1회, 커밋에 이름이 기록됨) $ git config --global user.name "홍길동" $ git config --global user.email "hong@example.com" # 3. 설정 확인 $ git config --list
📌 설치: git-scm.com → Download. Mac은 Homebrew로 brew install git
섹션 B

저장소 (Repository) 이해하기

repository(레포지토리)는 Git의 핵심 단위입니다. 로컬과 원격의 차이를 명확히 이해합니다.

📦 Repository = Git이 관리하는 프로젝트 폴더

일반 폴더와 repository의 차이는 숨겨진 .git 폴더 하나입니다. 이 폴더 안에 모든 버전 이력이 담겨 있습니다.

# 일반 폴더를 Git 저장소로 초기화 $ mkdir my-project $ cd my-project $ git init Initialized empty Git repository in /my-project/.git/ # .git 폴더가 생겼는지 확인 (숨김 파일 표시) $ ls -la drwxr-xr-x .git ← 이 폴더가 바로 Git의 뇌

🏠 로컬 저장소 vs ☁️ 원격 저장소

🏠 Local Repository
내 컴퓨터에 있는 저장소.
인터넷 없이도 commit 가능.
git init 또는 git clone으로 생성.
☁️ Remote Repository
GitHub 서버에 있는 저장소.
push로 업로드, pull로 다운로드.
github.com에서 생성.
🏠 로컬
push / pull
☁️ GitHub

🆕 GitHub에서 새 저장소 만들기

1
github.com 접속 → 우상단 +New repository
2
Repository name 입력 (영문, 하이픈 권장) → Public / Private 선택
3
Add a README file 체크 (처음엔 체크 권장) → Create repository
4
Clone URL 복사 → 내 PC로 가져오기
# GitHub에서 만든 저장소를 내 PC로 가져오기 $ git clone https://github.com/username/my-project.git Cloning into 'my-project'... remote: Counting objects: 3, done. ✓ 완료! my-project 폴더가 생성됩니다.

📋 README.md — 저장소의 첫인상

README.md는 저장소 메인 화면에 표시되는 소개 문서입니다. Markdown 형식으로 작성합니다.

# README.md 기본 구조 (Markdown) # 프로젝트 이름 한 줄 설명 ## 설치 방법 ```bash npm install ``` ## 사용법 ... ## 기여 방법 ...
💡 .gitignore 파일: Git이 추적하지 않을 파일 목록. node_modules/, .env, *.log 등을 여기 적습니다.
섹션 C

핵심 워크플로 — 수정 → commit → push

Git의 가장 기본적인 작업 흐름입니다. 이 3단계를 완전히 이해하면 기초는 완성됩니다.

🗂️ Git의 3가지 공간 — 파일이 어디 있나

☁️ Remote (GitHub 서버)
push로 올라옴 / pull로 내려받음
↕ push / pull
📸 Local Repository (커밋 이력)
commit으로 저장됨
↕ commit / checkout
🎭 Staging Area (index)
git add로 올라옴
↕ add / restore
✏️ Working Directory (작업 공간)
파일을 직접 수정하는 곳

🔄 기본 워크플로 — 실전 명령어

# 1. 현재 상태 확인 (항상 먼저!) $ git status On branch main Changes not staged for commit: modified: index.html ← 수정했지만 아직 add 안 한 파일 # 2. Staging Area에 올리기 (commit할 파일 선택) $ git add index.html # 특정 파일만 $ git add . # 현재 폴더 전체 # 3. 커밋 — 스냅샷 찍기 $ git commit -m "헤더 스타일 수정" [main 3a7f2b1] 헤더 스타일 수정 1 file changed, 5 insertions(+), 2 deletions(-) # 4. GitHub에 올리기 $ git push origin main To https://github.com/username/my-project.git abc123..3a7f2b1 main → main

✍️ 좋은 commit 메시지 작성법

❌ 나쁜 메시지
"수정" "asdf" "작업중" "fix stuff"
✅ 좋은 메시지
"로그인 버튼 색상 파란색으로 변경" "사용자 이메일 검증 로직 추가" "fix: 모바일 레이아웃 깨짐 수정" "docs: README 설치 방법 업데이트"
💡 Conventional Commits 형식: feat:(기능) fix:(버그) docs:(문서) style:(스타일) refactor:(리팩토링)

📥 pull — 원격 저장소의 변경사항 가져오기

# 원격 저장소의 최신 내용을 내 로컬로 가져오기 $ git pull origin main Updating abc123..def456 Fast-forward README.md | 3 +++ # 팀 작업 시 하루 시작할 때 습관으로! # pull 먼저 → 작업 → commit → push 순서
명령어하는 일언제 씁니까
git pull원격→로컬 (다운로드+병합)작업 시작 전
git fetch원격→로컬 (다운로드만, 병합 안 함)변경사항 먼저 확인하고 싶을 때
git push로컬→원격 (업로드)commit 후 공유할 때

🕐 commit 이력 보기

# 커밋 이력 보기 $ git log --oneline 3a7f2b1 헤더 스타일 수정 def4567 로그인 기능 추가 abc1234 Initial commit # 특정 커밋으로 파일 되돌리기 $ git checkout abc1234 -- index.html # index.html을 abc1234 시점으로 복구
섹션 D

브랜치 (Branch) — 안전한 실험 공간

브랜치는 메인 코드를 건드리지 않고 새로운 작업을 시도할 수 있는 평행 작업 공간입니다.

🌿 브랜치 비유 — 나뭇가지

나무의 줄기(main)에서 가지(branch)를 뻗어내어 독립적으로 작업하고, 완성되면 줄기로 합칩니다(merge).

main ●───●───●───────────────● ← 안정적인 최종 버전 \ / feature ●───●───● ← 새 기능 개발 (main에 영향 없음)
💡 브랜치는 실제로 파일을 복사하지 않습니다. 단지 "어느 커밋 시점을 가리키는 포인터"입니다. 그래서 매우 빠르고 용량을 거의 차지하지 않습니다.

🌿 브랜치 기본 명령어

# 현재 브랜치 목록 보기 $ git branch * main ← * 표시가 현재 위치한 브랜치 # 새 브랜치 만들기 $ git branch feature/login # 브랜치 이동 (switch) $ git switch feature/login Switched to branch 'feature/login' # 만들면서 바로 이동 (자주 쓰는 패턴) $ git switch -c feature/signup # 작업 완료 → main에 병합 (merge) $ git switch main $ git merge feature/login Updating abc123..3a7f2b1 Fast-forward # 병합 완료된 브랜치 삭제 $ git branch -d feature/login

📋 브랜치 네이밍 컨벤션

패턴용도예시
feature/새 기능 개발feature/user-login
fix/버그 수정fix/payment-error
hotfix/긴급 수정hotfix/security-patch
docs/문서 작업docs/readme-update
refactor/코드 개선refactor/auth-logic

⚠️ 브랜치에서 자주 생기는 오해

오해: 브랜치를 만들면 파일이 복사된다 → 사실: 포인터만 바뀝니다. 파일 복사는 없습니다.
오해: main에 merge하면 feature 브랜치는 사라진다 → 사실: 수동으로 삭제하기 전까지 남아있습니다.
오해: 브랜치끼리 충돌은 무조건 위험하다 → 사실: 충돌은 자연스러운 과정이며 해결법이 있습니다. (Part 2에서 다룹니다)
섹션 E

5명 전문가 패널 — Dr. 시리즈

각 전문가를 클릭하면 해당 주제를 깊이 설명합니다. Inspector 권고안에 따라 실행 프롬프트 형식으로 작성되었습니다.

섹션 F

Part 1 학습 로드맵

단계별 체크박스로 진행 상황을 확인하세요. 저장됩니다.

섹션 G

퀴즈 — Part 1 이해도 확인

12문항으로 Git·GitHub 기초 개념을 점검합니다.

 
섹션 H

Git·GitHub 용어사전 (Part 1)

섹션 I

복사용 치트시트

자주 쓰는 명령어를 복사해 두세요.

📋 Git 초기 설정 (최초 1회)

# Git 버전 확인
git --version

# 사용자 정보 등록
git config --global user.name "이름"
git config --global user.email "이메일@example.com"

# 기본 브랜치를 main으로 설정
git config --global init.defaultBranch main

# 설정 확인
git config --list

📋 새 프로젝트 시작 흐름

# 방법 A: 내 PC에서 먼저 시작
mkdir my-project && cd my-project
git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/username/my-project.git
git push -u origin main

# 방법 B: GitHub에서 먼저 만들고 가져오기
git clone https://github.com/username/my-project.git
cd my-project

📋 매일 쓰는 기본 워크플로

# 하루 시작: 최신 내용 가져오기
git pull origin main

# 상태 확인 (습관적으로)
git status

# 파일 추가 후 staging
git add .             # 전체
git add 파일명        # 특정 파일

# 커밋 (의미 있는 단위로)
git commit -m "feat: 기능 설명"

# GitHub에 올리기
git push origin main

📋 브랜치 작업 흐름

# 새 브랜치 만들고 이동
git switch -c feature/기능명

# 작업 후 커밋
git add .
git commit -m "feat: 기능명 추가"

# 브랜치 목록 보기
git branch

# main으로 돌아와서 병합
git switch main
git merge feature/기능명

# 브랜치 삭제 (병합 완료 후)
git branch -d feature/기능명

# 원격에도 푸시
git push origin main

📋 자주 쓰는 조회 명령어

# 커밋 이력 (한 줄)
git log --oneline

# 커밋 이력 (그래프)
git log --oneline --graph --all

# 변경 내용 비교
git diff              # 작업 공간 vs staging
git diff --staged     # staging vs 최근 커밋

# 특정 파일 되돌리기 (마지막 커밋으로)
git checkout -- 파일명

# 마지막 커밋 메시지 수정
git commit --amend -m "수정된 메시지"