Skip to content

Latest commit

 

History

History
108 lines (72 loc) · 3.67 KB

File metadata and controls

108 lines (72 loc) · 3.67 KB

스테이징과 커밋

01-git-fundamentals.md에서 감질나게 다루던
스테이징(Staging)커밋(Commit) 에 대해 자세히 알아보자.


스테이징과 커밋이 뭔데? 왜 필요한데?

alt text

Git에서 파일을 수정하면, 그 변경 사항은 곧바로 기록되지 않는다.
Git은 “무엇을 기록할 것인지”를 사용자가 직접 선택하도록 설계된 도구이기 때문이다.

한 번 비유를 들어보자.

사진기사가 사진을 찍기 위해 4인 가족을 촬영한다고 가정하자.
사진을 찍기 전, 사진기사는 사진에 담을 사람들만 무대 위로 올린다.
이 과정이 바로 스테이징이다.

그리고 준비가 끝난 뒤, 사진기사가 셔터를 눌러 사진을 찍는 행위가 바로 커밋이다.

즉,

  • 스테이징은 무대 위에 올릴 사람을 고르는 과정
  • 커밋은 그 순간을 사진으로 남기는 행위

에 해당한다.

왜 이런 단계가 필요할까?

작업 영역에서는 파일 수정이 매우 자유롭게 이루어진다.
예를 들어, 여동생이 아직 화장을 하고 있는 중이라면
화장 과정 자체를 사진으로 남기고 싶지는 않을 것이다.

Git도 마찬가지다.
작업 중인 모든 변경 사항을 무분별하게 기록하지 않기 위해,
이번에 기록할 변경만 선별하는 단계가 필요하며
그 역할을 수행하는 것이 스테이징이다.

결국 커밋은

특정 시점의 의미 있는 변경 사항을 남겨두는 스냅샷

이라고 볼 수 있다.


스테이징이란?

스테이징(Staging)은 작업 영역에서 발생한 변경 사항 중, 이번에 기록할 내용을 선택하는 과정이다.
git add 명령을 통해 선택된 파일들은 스테이징 영역(Staging Area) 에 올라가며,
이 영역에 올라간 변경 사항만이 커밋의 대상이 된다.

스테이징이 존재하기 때문에,

  • 작업 중인 파일 전체가 자동으로 기록되지 않고
  • 의미 없는 중간 과정은 제외한 채
  • 의도한 변경만 정확히 커밋할 수 있다.

커밋이란?

커밋(Commit)은 스테이징 영역에 올라간 변경 사항을 하나의 이력으로 저장하는 작업이다.
커밋이 생성되면 해당 시점의 프로젝트 상태가 하나의 스냅샷으로 기록되며,
이후 언제든지 해당 시점의 상태를 확인하거나 되돌릴 수 있다.

사진 비유로 보면,

  • 스테이징이 준비 과정이라면
  • 커밋은 셔터를 눌러 사진을 찍는 순간

이다.

따라서 커밋은 아무 때나 남기는 것이 아니라,
의미 있는 변경 단위마다 남기는 기록이어야 한다.


스테이징과 커밋의 관계 정리

Git의 기본 흐름은 다음과 같다.

  • 작업 영역(Working Area)
    파일을 자유롭게 수정하는 공간

  • 스테이징 영역(Staging Area)
    이번에 기록할 변경 사항을 선택하는 공간

  • 저장소(Repository)
    선택된 변경 사항이 커밋으로 기록되는 공간

즉,

작업 → 스테이징(선택) → 커밋(기록)

이라는 흐름으로 Git은 변경 이력을 관리한다.


주요 명령어

# 변경된 파일을 스테이징 영역에 추가
git add file.txt

# 스테이지 위에 올라간 파일, 폴더 등을 확인 할 수 있다.
git status

# 스테이징된 변경 사항을 커밋으로 기록
git commit -m "Add feature description"

이 두 명령어의 역할을 정확히 구분해서 사용하는 것이 Git을 제대로 사용하는 첫 번째 단계이다.