부록 A — Git 명령어 빠른 참고표
이 책의 본문은 GitHub Desktop과 VSCode Source Control만으로 완주할 수 있게 설계되어 있습니다. 터미널은 필수가 아닙니다. 다만 GUI로 해결되지 않는 상황이 가끔 있습니다. .env 파일을 추적에서 제거할 때, 특정 커밋만 되돌릴 때, 원격 저장소 주소를 갈아끼울 때가 그렇습니다. 이 부록은 그럴 때만 펼쳐 보면 되는 참고표입니다.
A.1 기본 워크플로 명령어
한 프로젝트를 시작해서 GitHub에 올리기까지 가장 자주 쓰는 명령어입니다. 오른쪽 열은 GitHub Desktop에서 같은 일을 하는 방법입니다.
| 명령어 | 하는 일 | GitHub Desktop 대응 |
|---|---|---|
git init | 현재 폴더를 Git 저장소로 만든다 | File → New Repository |
git status | 현재 변경된 파일 목록을 본다 | Changes 탭 자동 표시 |
git add . | 모든 변경 파일을 스테이징한다 | Changes 탭 체크박스 전체 선택 |
git add 파일명 | 특정 파일만 스테이징한다 | Changes 탭 파일별 체크박스 |
git commit -m "메시지" | 스테이징된 변경을 커밋한다 | Summary 입력 후 Commit to main |
git push | 로컬 커밋을 GitHub에 올린다 | Push origin 버튼 |
git pull | GitHub의 최신 커밋을 내려받는다 | Fetch origin → Pull origin |
git clone URL | 원격 저장소를 내 컴퓨터로 복제한다 | File → Clone Repository |
A.2 브랜치 명령어
메인 라인을 지키면서 새 기능을 실험할 때 쓰는 명령어입니다. 9장의 박혜원 선생님 협업 흐름과 같은 도구들입니다.
| 명령어 | 하는 일 | GitHub Desktop 대응 |
|---|---|---|
git branch | 모든 브랜치 목록을 본다 | Current Branch 드롭다운 |
git branch 이름 | 새 브랜치를 만든다 (이동은 안 함) | New Branch → 이름 입력 |
git checkout -b 이름 | 새 브랜치를 만들고 바로 이동한다 | New Branch (기본 동작) |
git checkout 이름 | 기존 브랜치로 이동한다 | Current Branch 드롭다운에서 선택 |
git merge 이름 | 지정한 브랜치를 현재 브랜치에 합친다 | Branch → Merge into Current Branch |
git branch -d 이름 | 병합이 끝난 브랜치를 안전하게 삭제한다 | Branch → Delete |
A.3 되돌리기 명령어
실수를 되돌리는 명령어입니다. 위쪽일수록 안전하고, 아래쪽일수록 파괴적입니다. 아래쪽 두 줄은 주의해서 씁니다.
| 명령어 | 하는 일 | 안전도 |
|---|---|---|
git restore 파일명 | 수정 중이던 파일을 마지막 커밋 상태로 되돌린다 | 안전 |
git restore --staged 파일명 | 스테이징을 취소한다 (변경은 유지) | 안전 |
git commit --amend | 직전 커밋 메시지 또는 내용을 수정한다 | 보통 (아직 푸시 안 했을 때만) |
git revert 커밋해시 | 특정 커밋을 "취소하는 새 커밋"을 만든다 | 안전 (히스토리 보존) |
git reset --soft HEAD~1 | 직전 커밋을 취소하되 변경 내용은 남긴다 | 보통 |
git reset --hard HEAD~1 | 직전 커밋과 변경 내용을 모두 버린다 | 위험 · 복구 불가 |
--hard는 문자 그대로 하드합니다. 이 옵션을 누르는 순간 작업한 파일까지 함께 사라집니다. 6장에서 본 Revert가 안전한 이유는 되돌림 자체가 새 커밋으로 기록되기 때문입니다. 평소에는 Revert를, reset --hard는 "정말로 버려도 되는 줄 알지만 확인"이 끝난 뒤에만 씁니다.
A.4 .gitignore 자주 쓰는 패턴 (교사 환경 기준)
10장에서 다룬 .gitignore를 교사용 프로젝트에 맞게 정리한 표준 템플릿입니다. 새 프로젝트를 시작할 때마다 그대로 복사해 쓰면 됩니다.
# 환경변수 · API 키
.env
.env.local
.env.production
.env.development
# AI 도구 설정
.claude/
.cursor/
.aider*
# 에디터 · OS 부산물
.vscode/
.idea/
.DS_Store
Thumbs.db
# 의존성 폴더
node_modules/
__pycache__/
venv/
.venv/
# 빌드 산출물
dist/
build/
.next/
out/
# 로그 · 임시 파일
*.log
*.tmp
위 템플릿은 웹(Next.js 계열), 파이썬 스크립트, Claude·Cursor 설정을 모두 포함합니다. 해당 도구를 쓰지 않아도 줄을 남겨 두어 나쁠 것이 없습니다. 나중에 쓰게 됐을 때 이미 막혀 있습니다.