깃(Git) 사용 시 꼭 알아야 할 스테이지(Stage)와 커밋(Commit)의 개념
깃을 처음 배우면 git add와 git commit이라는 두 명령어를 가장 먼저 만나게 됩니다. 그런데 저장 한 번이면 될 것 같은데 왜 명령어가 두 개나 필요한지 헷갈리는 분이 많습니다. 이 글에서는 스테이지와 커밋이 각각 무엇인지, 왜 나눠져 있는지를 비유와 함께 설명하고, 터미널에서 직접 따라 해 보는 연습까지 해 봅니다.
깃에서 저장이 두 단계로 나뉜 이유
일반 프로그램에서는 저장 버튼을 한 번 누르면 끝납니다. 하지만 깃은 변경 내용을 기록으로 남기는 도구라서, 어떤 변경을 기록에 넣을지 먼저 고르는 과정이 있습니다. 이삿짐을 싸는 것에 비유하면 쉽습니다. 방 안의 물건 중에서 이번 상자에 담을 물건만 골라 상자에 넣는 것이 스테이지이고, 상자를 닫고 이름표를 붙여 보관하는 것이 커밋입니다. 상자에 담지 않은 물건은 기록에 들어가지 않습니다.
깃의 세 가지 공간
깃에는 변경 내용이 머무는 공간이 세 곳 있습니다.
작업 폴더는 내가 파일을 만들고 고치는 평소의 폴더입니다.
스테이지(스테이징 영역)는 다음 기록에 넣기로 고른 변경 내용이 잠시 모여 있는 곳입니다.
저장소(리포지토리)는 커밋으로 확정된 기록이 쌓이는 곳입니다.
변경 내용은 작업 폴더에서 출발해 git add로 스테이지에 올라가고, git commit으로 저장소에 기록됩니다.
스테이지와 커밋 직접 해 보기
연습용 폴더를 만들어 처음부터 따라 해 봅니다. 터미널을 열고 아래 명령을 한 줄씩 입력하세요. 먼저 연습용 폴더를 만들고 그 안으로 이동합니다.
mkdir git-practice
cd git-practice
폴더 안에서 깃 저장소를 시작합니다. Initialized empty Git repository라는 메시지가 나오면 성공입니다.
git init
이제 연습용 파일을 하나 만듭니다.
echo "첫 번째 줄" > memo.txt
현재 상태를 확인합니다. git status는 깃이 지금 어떤 상태인지 알려 주는 명령으로, 자주 쓰게 됩니다.
git status
아직 깃이 이 파일을 기록하지 않았기 때문에 Untracked files(추적되지 않는 파일)에 memo.txt가 표시됩니다.
Untracked files:
(use "git add <file>..." to include in what will be committed)
memo.txt
이제 memo.txt를 스테이지에 올립니다.
git add memo.txt
다시 git status를 입력하면 memo.txt가 Changes to be committed(커밋될 변경 사항) 아래로 옮겨진 것을 볼 수 있습니다. 상자에 담긴 상태입니다. 이제 커밋으로 기록을 확정합니다. 따옴표 안의 글은 이번 기록이 무엇인지 알려 주는 설명입니다.
git commit -m "첫 번째 커밋"
한 번 더 연습해 봅니다. 파일에 줄을 하나 추가하고 상태를 확인합니다.
echo "두 번째 줄" >> memo.txt
git status
이번에는 memo.txt가 Changes not staged for commit(스테이지에 올리지 않은 변경 사항) 아래에 modified(수정됨)로 표시됩니다. 같은 순서로 스테이지에 올리고 커밋합니다.
git add memo.txt
git commit -m "두 번째 줄 추가"
마지막으로 기록 목록을 한 줄씩 확인합니다.
git log --oneline
최신 기록이 위에 나오고, 앞의 짧은 글자는 각 커밋을 구분하는 고유 번호입니다. 번호는 컴퓨터마다 다르게 보입니다.
맨 위 줄의 HEAD -> main은 지금 내가 있는 위치가 가장 최신 기록이라는 표시입니다.
bf78d25 (HEAD -> main) 두 번째 줄 추가
3c0a22c 첫 번째 커밋
스테이지가 있어서 좋은 점
파일 여러 개를 고쳤더라도 이번 커밋에 넣을 파일만 골라서 add 할 수 있습니다. 예를 들어 글자 수정과 디자인 수정을 동시에 했다면 두 개를 따로 커밋해서 기록을 깔끔하게 나눌 수 있습니다. 변경한 모든 파일을 한꺼번에 올리고 싶다면 아래 명령을 씁니다.
git add .
처음 하는 분들이 자주 하는 실수
가장 흔한 실수는 git add를 빼먹고 바로 git commit을 하는 것입니다. 이러면 스테이지에 올라간 변경 사항이 없어서 커밋이 되지 않습니다. 이럴 때는 git status로 상태를 확인하고 git add로 먼저 파일을 올린 뒤 다시 커밋하면 됩니다. 또 커밋 설명에는 나중에 읽어도 이해되는 짧은 문장을 쓰는 것이 좋습니다.
마무리
저도 이 글을 쓰면서 연습용 폴더를 만들어 위 순서대로 직접 실행해 봤습니다. git add를 하기 전후로 git status의 표시가 Untracked files에서 Changes to be committed로 바뀌는 것을 눈으로 확인하니, 스테이지가 상자에 담는 단계라는 설명이 훨씬 이해하기 쉬웠습니다.
오늘은 깃의 스테이지와 커밋이 무엇인지, 왜 두 단계로 나눠져 있는지, 그리고 터미널에서 직접 연습하는 방법을 알아봤습니다. 변경 내용을 상자에 담는 것이 add, 상자를 닫고 기록으로 남기는 것이 commit이라고 기억하면 쉽습니다. git status로 지금 상태를 자주 확인하면서 한 번씩 따라 해 보세요.
깃 설치와 사용자 정보 등록이 아직이라면 아래 글을 먼저 참고하세요.




댓글 0
첫 댓글을 남겨보세요.