Git 기초 실습 예시
AI가 만든 변경을 내 컴퓨터 안에서 커밋으로 안전하게 다루는 단계별 실습 | ← 매뉴얼로 돌아가기
my-site)가 있고, AI에게 "메인 페이지에 소개 문구를 추가해 줘"라고 시켜 index.html이 바뀌었습니다. 아직 Git을 한 번도 적용하지 않은 폴더입니다. 이 폴더를 저장소로 만들고 → 첫 커밋까지 남기는 것이 목표입니다.
-
(최초 1회) 내 이름·이메일 설정
커밋에 작성자로 기록됩니다. 컴퓨터에서 한 번만 하면 이후 모든 저장소에 적용됩니다.
git config --global user.name "Hong Gildong" git config --global user.email "you@example.com"
-
프로젝트 폴더로 이동해 저장소 초기화
git init -b main이.git폴더를 만들어 추적을 시작하고, 기본 브랜치를main으로 잡습니다.cd ~/projects/my-site git init -b main
-
무엇이 추적될지 상태 확인
아직 추적되지 않은(빨간색) 파일들이 보입니다. AI가 만진
index.html도 여기 있습니다.git status
-
전부 스테이징하고 메시지를 붙여 커밋
첫 버전이 저장소에 기록됩니다. 메시지는 무엇을 했는지 한 줄로 요약합니다.
git add . git commit -m "프로젝트 첫 커밋: 메인 페이지 소개 문구 추가"
-
커밋이 남았는지 확인
방금 만든 커밋이 히스토리에 한 줄로 보이면 성공입니다. 앞으로 모든 변경은 이 첫 커밋 위에 쌓입니다.
git log --oneline
git add는 변경을 스테이징 영역(index)에 올려 "이번 커밋에 담을 것"으로 표시하고, git commit은 그 스테이징된 내용만 묶어 스냅샷으로 저장합니다. 여기까지는 모두 내 컴퓨터 안에서만 일어나는 일이라 인터넷이 필요 없습니다.
git status를 치세요. 지금 무엇이 스테이징됐고 다음에 뭘 하면 되는지 Git이 안내해 줍니다. 커밋 메시지는 "수정" 같은 모호한 말 대신 "소개 문구 추가"처럼 구체적으로 적어야 나중에 git log만 봐도 흐름이 읽힙니다.
git init이 된 프로젝트에서, AI에게 "DB 연결 코드 리팩터링하고 로그인 로직도 정리해 줘"라고 한 번에 시켰더니 app.py 한 파일 안에 DB 관련 변경과 로그인 관련 변경이 한꺼번에 들어왔습니다. 통째로 커밋하면 나중에 한쪽만 검토·되돌리기 어렵습니다. 한 파일 안의 변경을 의미 단위(DB만 / 로그인만) 두 커밋으로 쪼개는 것이 목표입니다.
-
hunk 단위 대화형 스테이징 시작
-p를 붙이면 변경 덩어리(hunk)마다 올릴지 물어봅니다. DB 관련 hunk에는y, 로그인 관련 hunk에는n으로 답해 DB 변경만 먼저 스테이징합니다. (덩어리가 너무 크면s로 더 잘게 나눕니다.)git add -p app.py
-
이번에 담길 내용만 검토
스테이징된(곧 커밋될) 변경만 따로 확인해, DB 관련 변경만 올라갔는지 검증합니다.
git diff --staged
-
첫 번째 의미 단위 커밋(DB)
DB 변경만 담아 커밋합니다. 로그인 변경은 아직 작업 폴더에 그대로 남아 있습니다.
git commit -m "DB 연결 코드 리팩터링"
-
남은 변경을 두 번째 커밋(로그인)
이제 남은 변경은 로그인 관련뿐이므로 파일 전체를 올려 커밋합니다.
git add app.py git commit -m "로그인 로직 정리"
-
깔끔하게 나뉜 커밋 확인
한 덩어리 변경이 두 개의 의미 있는 커밋으로 갈라졌는지 확인합니다.
git log --oneline
git add -p는 같은 파일 안의 변경도 hunk 단위로 골라 index에 올립니다. 그래서 한 번에 쏟아진 AI 변경을 "DB 커밋 / 로그인 커밋"처럼 주제별로 분리할 수 있고, 나중에 한쪽만 되돌리기도 쉬워집니다. add -p의 선택지는 y(담기) n(건너뛰기) s(더 잘게 쪼개기) q(종료)이며, 모르겠으면 ?로 도움말을 봅니다.
y/n만으로는 못 가릅니다. 이때는 s로 더 잘게 쪼개거나 e로 직접 편집해야 합니다. 한 줄도 빠뜨리지 않도록 매 커밋 후 git status로 남은 변경을 확인하세요.
.env(비밀 키)와 .DS_Store 같은 올리면 안 되는 파일이 추적 대상에 들어왔고, 커밋 메시지도 "수정", "ㅁㄴㅇ"처럼 의미 없는 것이 섞였습니다. 곧 이 저장소를 점검할 예정이라, 불필요한 파일을 제외하고 이력을 읽기 좋게 정돈하는 것이 목표입니다. (모두 내 컴퓨터 안에서, 아직 어디에도 공유하지 않은 상태가 전제입니다.)
-
제외할 파일을 .gitignore에 등록
저장소 루트에
.gitignore를 만들고 제외할 패턴을 한 줄에 하나씩 적습니다. 이후 이 파일들은git status에서 보이지 않습니다.printf ".env\n.DS_Store\nnode_modules/\n" > .gitignore git status # 제외된 파일이 더 이상 안 보이는지 확인
-
.gitignore 자체를 의미 있는 메시지로 커밋
제외 규칙도 버전 관리에 넣어 둡니다. 첫 줄은 50자 이내로 무엇을·왜 했는지 적습니다.
git add .gitignore git commit -m ".gitignore 추가: 비밀 파일·OS 잡파일 제외"
-
이력을 점검하고 다음 커밋부터 한 주제씩
지금까지의 이력을 훑어 의미 없는 메시지가 있는지 봅니다. 앞으로는 한 커밋에 한 주제만 담아, 이력만 봐도 변경 흐름이 읽히게 만듭니다.
git log --oneline
.gitignore는 아직 추적 안 된 파일에만 효과가 있습니다. 그래서 추적되기 전에 미리 등록해 두는 것이 가장 깔끔합니다. 좋은 이력의 핵심은 거창한 명령이 아니라 "한 커밋 = 한 주제 + 또렷한 메시지"라는 단순한 습관입니다.
.env가 있다면 .gitignore에 넣어도 계속 추적됩니다. 이 경우 git rm --cached .env로 추적만 해제한 뒤 다시 커밋해야 합니다. 또한 이미 만든 커밋의 메시지를 고치거나 합치는 일(commit --amend·reset)은 되돌리기 영역이라, 안전 규칙과 함께 별도 매뉴얼에서 다룹니다.
git 2.5x(2.50.1) 기준 | 2026년 6월 16일 작성
← Git 기초 매뉴얼