- 공유 링크 만들기
- X
- 이메일
- 기타 앱
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
목차
Git을 처음 접할 때 가장 먼저 배우는 명령어 중 하나이자, 가장 중요한 행동이 바로 '커밋(commit)'이다. 버전 관리의 모든 것은 커밋에서 시작하고 커밋으로 완성된다. 하지만 많은 입문자들이 커밋을 단순히 '저장'이나 '백업' 정도로만 생각하고 그 중요성을 간과하곤 한다.
이 글에서는 Git의 심장과도 같은 커밋이 정확히 무엇을 의미하는지, 어떤 과정을 통해 이루어지는지, 그리고 어떻게 해야 '좋은 커밋'을 남길 수 있는지에 대해 자세히 알아본다.
커밋을 한마디로 정의하면 '프로젝트의 의미 있는 변경사항을 기록한 스냅샷(snapshot)'이다. 비디오 게임의 '저장 지점(save point)'을 떠올리면 이해하기 쉽다. 게임을 하다가 중요한 단계를 클리어했을 때 저장을 하듯, 코딩을 하다가 특정 기능이 완성되거나 중요한 버그가 수정되었을 때 커밋을 남긴다.
이 스냅샷에는 다음과 같은 정보가 포함된다.
a1b2c3d...)단순히 파일의 최신 버전을 덮어쓰는 '저장'과 달리, 커밋은 과거의 모든 스냅샷을 차곡차곡 쌓아나가기 때문에 언제든지 원하는 과거 시점으로 돌아가 코드를 확인하고 복원할 수 있다. 이렇게 과거의 특정 시점으로 돌아가는 다양한 방법에 대해서는 "Git 체크아웃, 리버트, 리셋의 차이" 글에서 더 자세히 다루고 있다.
Git에서 커밋은 단순히 git commit 명령어 한 번으로 끝나지 않는다. 그 이면에는 '작업 디렉토리', '스테이징 영역', '저장소'라는 세 가지 공간이 존재한다. 이 과정을 이해하는 것이 커밋을 제대로 활용하는 첫걸음이다.
커밋의 3단계 흐름
git addgit commit현재 내가 직접 파일을 수정하고 코드를 작성하는, 눈에 보이는 프로젝트 폴더 그 자체다. 이곳에서의 모든 변경사항은 Git이 '추적'은 하지만 아직 관리 대상으로 확정하지는 않은 상태다.
스테이징 영역은 다음 커밋에 포함시킬 변경사항들을 모아두는 '대기실' 또는 '장바구니' 같은 공간이다. 작업 디렉토리에서 여러 파일을 수정했더라도, 그중에서 이번 커밋에 포함하고 싶은 변경사항만 git add [파일명] 명령어로 골라 담을 수 있다.
왜 이 중간 단계가 필요할까? 관련 없는 여러 변경사항을 하나의 커밋에 뒤죽박죽 섞는 것을 방지하기 위해서다. 예를 들어 '로그인 기능 추가'와 '오타 수정' 작업을 동시에 했더라도, 각각을 별도의 커밋으로 깔끔하게 분리하여 기록할 수 있게 해준다.
스테이징 영역에 준비된 변경사항들을 git commit 명령어를 통해 비로소 저장소에 영구적인 스냅샷으로 기록한다. 이 저장소(.git 폴더)는 프로젝트의 모든 커밋 히스토리를 관리하는 Git의 핵심 공간이다.
커밋 메시지는 미래의 나 자신과 동료를 위한 가장 중요한 소통 수단이다. "코드 수정", "버그 해결"과 같은 무의미한 메시지는 프로젝트 히스토리의 가치를 떨어뜨린다. 좋은 커밋 메시지는 다음 원칙을 따른다.
커밋은 프로젝트의 발전 과정을 담은 한 편의 역사책과 같다. 각각의 커밋은 그 자체로 의미 있는 변경 단위를 형성하며, 이러한 커밋들이 모여 브랜치라는 개발의 큰 흐름을 만들어낸다.
스테이징 영역을 활용하여 각 커밋의 목적을 명확히 하고, 정성 들여 커밋 메시지를 작성하는 습관을 들인다면, 당신의 Git 저장소는 시간이 지나도 가치를 잃지 않는 훌륭한 자산이 될 것이다.
댓글
댓글 쓰기