V VibeCoding 365
사전 목록 git

VIBECODING 365 / DICTIONARY

커밋

Commit

DEFINITION

커밋은 Git이 프로젝트의 한 순간을 저장소에 남기는 기록이다. 공식 문서 git-commit의 한 줄은 저장소에 변경을 기록한다는 것이다. 새 커밋은 인덱스의 현재 내용과, 그 변경을 설명하는 로그 메시지로 만들어진다. 보통 지금 브랜치 끝의 직계 자식이 되고, 브랜치 포인터가 그 커밋을 가리키도록 옮겨진다. 브랜치가 없는 상태(detached HEAD)면 포인터만 움직인다. Pro Git은 Git을 차이 목록이 아니라 작은 파일 시스템의 스냅샷 흐름으로 본다. 커밋할 때마다 그 순간의 파일 모습을 찍고, 안 바뀐 파일은 이전과 같은 내용을 가리킨다.

고친 것과 올릴 것이 갈라지는 자리

워킹 트리에서 파일을 고쳤다고 그 내용이 곧 커밋에 들어가지는 않는다. Pro Git은 파일을 추적됨과 추적 안 됨으로 나누고, 추적되는 파일은 다시 수정 없음, 수정됨, 스테이징됨으로 나눈다. 흐름은 워킹 트리에서 고치고, 다음 스냅샷에 넣을 것만 고르고, 그다음 커밋으로 로컬 저장소에 남기는 세 단계다. 다음 스냅샷에 넣을 내용은 인덱스(스테이징 영역)에 올린 것이다. git add는 파일을 프로젝트에 넣는 버튼이라기보다, 지금 이 내용을 다음 커밋에 넣겠다는 표시다. add 이후에 같은 파일을 더 고치면, 커밋에는 add 순간의 내용이 들어간다. 최신을 넣으려면 다시 올려야 한다. 스테이징하지 않은 수정은 디스크에 남고, 이번 기록에는 안 탄다. 이미 추적 중인 수정과 삭제를 한꺼번에 올리며 커밋하는 짧은 길도 있지만, Pro Git은 원치 않는 변경까지 실릴 수 있다고 주의를 준다. 새 파일은 추적되지 않은 채로 두었다가, 명시해서 올려야 스냅샷에 들어간다.

첫 줄이 제목이 되는 메시지

커밋에는 변경을 설명하는 로그 메시지가 붙는다. 공식 문서 DISCUSSION은 필수는 아니지만, 50자를 넘기지 않는 한 줄 요약, 빈 줄, 그다음 자세한 본문으로 시작하라고 권한다. 첫 빈 줄 앞까지가 커밋 제목이며, Git 곳곳에서 그 제목을 쓴다. format-patch가 메일을 만들 때 제목을 Subject로 쓰는 것이 그 예다. 메시지를 명령에 바로 줄 수 있고, 여러 번 주면 단락으로 이어 붙는다.

이미 내보낸 끝을 고치는 일

방금 만든 브랜치 끝을 고칠 때는 amend로 그 자리를 새 커밋으로 바꿀 수 있다. 기본은 부모와 작성자를 유지하고, 메시지는 원래 글을 출발점으로 연다. Pro Git은 메시지를 고치는 일과, 빠뜨린 파일을 올려 내용까지 바꾸는 일을 같은 명령으로 본다. 해시는 달라진다. 공식 문서는 이미 공개한 커밋을 amend하면 이력을 다시 쓰는 일이므로, 그 뜻을 이해하라고 적는다. Pro Git도 공유하기 전에 고치는 용도로 본다. 커밋 직후 실수는 reset으로 되돌리는 길이 문서에 있다. 저장소 훅으로 커밋 전과 메시지를 검사할 수 있고, 우회 옵션이 있으나 팀 규칙을 건너뛰는 일이다.

여러 파일을 만진 뒤의 한 알갱이

바이브 코딩에서 에이전트는 한 세션에 여러 파일을 고친다. 화면이 되어도, 그 전부가 한 의도인 것은 아니다. 커밋은 스테이징에서 고른 스냅샷이므로, 기록할 단위를 나눈 뒤에 메시지를 다는 쪽이 Pro Git이 그리는 흐름에 가깝다. 작동한다는 것과 저장소에 남길 순간을 골랐다는 것은 다른 단계다.

ENGLISH

Commit

EXAMPLE

git commit -m "fix login redirect"