GitGit/GitHub 기초 · 1입문

Git이란? — 버전 관리가 필요한 이유

Git버전관리VCS개발환경

버전 관리란 무엇인가?

코드를 작성하다 보면 이런 상황이 생깁니다.

프로젝트_최종.zip
프로젝트_최종2.zip
프로젝트_최종_진짜최종.zip
프로젝트_최종_진짜최종_수정.zip

파일을 이렇게 복사하는 것도 일종의 버전 관리지만, Git은 이를 훨씬 체계적으로 처리합니다.


Git의 핵심 개념

flowchart LR
    subgraph WD["작업 디렉토리"]
        F1["파일 수정"]
    end
    subgraph SA["스테이징 영역"]
        F2["커밋할 파일 선택"]
    end
    subgraph REPO["로컬 저장소"]
        F3["커밋 (스냅샷)"]
    end

    WD -->|"git add"| SA
    SA -->|"git commit"| REPO

Git은 파일의 변경 이력을 스냅샷 형태로 저장합니다. 언제든지 과거 시점으로 돌아갈 수 있습니다.


Git 설치 및 초기 설정

# 설치 확인
git --version
# git version 2.40.0

# 사용자 정보 설정 (최초 1회)
git config --global user.name "홍길동"
git config --global user.email "hong@example.com"

# 설정 확인
git config --list

저장소 초기화

# 새 프로젝트 시작
mkdir my-project
cd my-project
git init
# Initialized empty Git repository in .../my-project/.git/

# 또는 기존 폴더를 Git 저장소로
cd existing-folder
git init

git init을 실행하면 .git 폴더가 생성됩니다. 이 폴더에 모든 버전 정보가 담깁니다.


첫 커밋 만들기

# 파일 생성
echo "# 나의 첫 프로젝트" > README.md

# 상태 확인
git status
# Untracked files: README.md

# 스테이징 영역에 추가
git add README.md

# 커밋 (스냅샷 저장)
git commit -m "첫 번째 커밋: README 추가"

# 이력 확인
git log
# commit a1b2c3d (HEAD -> main)
# Author: 홍길동 <hong@example.com>
# Date:   Mon Apr 21 14:00:00 2026
#
#     첫 번째 커밋: README 추가

Git이 저장하는 것

flowchart TB
    C1["커밋 1\n'README 추가'\na1b2c3d"]
    C2["커밋 2\n'기능 추가'\nb2c3d4e"]
    C3["커밋 3\n'버그 수정'\nc3d4e5f"]

    C1 -->|"이전 커밋 참조"| C2
    C2 -->|"이전 커밋 참조"| C3
    HEAD["HEAD\n현재 위치"] --> C3

각 커밋은 고유한 해시(ID)를 가집니다. 과거 커밋으로 돌아가거나 비교할 때 이 ID를 사용합니다.


.gitignore: 추적하지 않을 파일

모든 파일을 Git으로 관리할 필요는 없습니다.

# .gitignore 파일 생성
cat > .gitignore << EOF
# 환경변수 (API 키, 비밀번호)
.env
.env.local

# 의존성 폴더
node_modules/
__pycache__/
*.pyc

# 빌드 결과물
dist/
build/
.next/

# OS 파일
.DS_Store
Thumbs.db

# IDE 설정
.vscode/
.idea/
EOF

정리

개념설명
저장소 (Repository)프로젝트의 모든 파일과 이력을 담는 공간
커밋 (Commit)특정 시점의 스냅샷 + 메시지
스테이징 영역커밋할 파일을 준비하는 중간 단계
HEAD현재 작업 중인 위치
.gitignoreGit이 무시할 파일/폴더 목록

다음 편에서는 기본 명령어 — add, commit, log, diff, status를 자유롭게 사용하는 방법을 배웁니다.

궁금한 점이 있으신가요?

협업·의뢰는 아래로, 가벼운 소통은 인스타그램 @bluefox._.hi도 환영이에요.