커밋(작업 한 덩이 저장)

언제 무엇이 바뀌었는지 추적하는 단위예요. 이번에 고친 것만 한 덩이로 묶고 무슨 작업이었는지 한 줄 적어 두는 일이라, 이 덩이를 어떻게 자르느냐가 나중에 되돌릴 수 있는 크기를 정해요.

쉽게 말하면

택배 상자에 물건을 담고 겉에 송장을 붙이는 일이에요. 오늘 나갈 물건을 전부 한 상자에 쏟아 넣으면 나중에 어느 상자에 뭐가 들었는지 아무도 몰라요. 반대로 주문 하나에 상자 하나를 쓰고 겉면에 무엇이 들었는지 적어 두면, 몇 달 뒤에도 라벨만 보고 찾아요. 커밋이 그 상자예요. 이번에 고친 것만 담고, 겉에 무슨 작업이었는지 한 줄 적어서 봉하는 거예요.

커밋 한 번은 바뀐 파일들을 한 덩이로 묶어 기록에 붙이는 일이에요. 이 덩이 하나가 이 기억하는 가장 작은 단위예요.

그래서 덩이를 어떻게 자르느냐가 그대로 되돌릴 수 있는 크기가 돼요. 덩이가 크면 하나를 빼려다 멀쩡한 것까지 같이 딸려 나와요.

하루치를 한 번에
월요일 커밋 1개 · 화면 색 바꾸기 · 결제 붙이기 · 오타 고치기

결제만 되돌리고 싶은데 방법이 없어요. 셋이 한 상자에 들어 있어서 색과 오타까지 같이 돌아가요.

일 하나에 한 덩이
월요일 커밋 3개 · 화면 색 바꾸기 · 결제 붙이기 · 오타 고치기

결제 상자만 골라 빼면 돼요. 나머지 둘은 손대지 않고 그대로 살아 있어요.

커밋 한 번에 남는 것

커밋에는 코드만 들어가지 않아요. 나중에 사고를 추적할 때 쓰는 정보가 같이 붙어요. 다섯 가지예요.

커밋에 붙는 것무슨 뜻인가이게 있어서 할 수 있는 일
바뀐 내용이번에 어느 파일의 어느 줄이 바뀌었는지 통째로 남아요어제와 오늘을 나란히 놓고 다른 곳만 골라 볼 수 있어요
찍은 시각연·월·일과 시·분까지 남아요"지난주 수요일부터 이상했다"는 손님 말이 조사 시작점이 돼요
찍은 사람이름과 메일 주소가 남아요손댄 사람이 여럿일 때 누구에게 물어볼지 바로 나와요
메시지무슨 작업이었는지 사람이 직접 적는 한 줄이에요목록만 훑어도 서비스가 어떻게 자라 왔는지 읽혀요
고유 번호커밋마다 자동으로 붙는 긴 영문·숫자 번호예요"어느 시점으로 돌릴까요"라는 질문에 정확히 답할 수 있어요

메시지는 미래의 나에게 쓰는 쪽지예요

코드는 컴퓨터가 읽고 메시지는 사람이 읽어요. 석 달 뒤에 이 줄을 읽을 사람은 사장님이거나 새로 온 개발자예요. 그때 "수정", "ㅇㅇ" 같은 한 줄만 늘어서 있으면 기록이 있어도 쓸 수가 없어요.

덩이를 어디서 자르나

자르는 기준은 하나면 충분해요. 되돌리고 싶어질 최소 단위로 자르는 거예요. 아래 다섯 가지만 지키면 나머지는 습관으로 붙어요.

  1. 1한 가지 일이 끝나면 그 자리에서 찍어요. 화면 문구를 고쳤으면 거기서 한 덩이예요. 다음 일을 시작하기 전에 봉하는 게 요령이에요.
  2. 2돌아가는 상태에서만 찍어요. 반쯤 부서진 상태를 덩이로 남기면 되돌아갈 자리로 못 써요. 되돌릴 곳은 멀쩡했던 곳이어야 해요.
  3. 3성격이 다른 작업을 한 덩이에 섞지 않아요. 특히 화면 수정과 장부 구조 변경은 따로 찍어요. 사고가 났을 때 원인을 가릅니다.
  4. 4비밀번호와 키는 절대 담지 않아요. 한 번 담기면 나중에 파일에서 지워도 옛 덩이에는 그대로 남아요. 환경변수 쪽을 먼저 보세요.
  5. 5남에게 넘기기 전에 밀린 것을 다 찍어요. 안 찍힌 변경은 깃허브에도 안 올라가요. 넘겼는데 최신이 아닌 사고가 여기서 나요.

하루에 몇 번이 적당한가요

횟수에는 정답이 없어요. 기준은 시간이 아니라 일이에요. 작은 일 하나가 끝날 때마다면 하루에 여러 번이 되고, 그게 정상이에요. 반대로 사흘 치를 한 번에 찍는 습관은 되돌리기를 못 쓰는 기능으로 만들어요.

메시지 한 줄이 값어치의 절반이에요

메시지는 잘 쓰면 몇 달치 기억을 대신해요. 규칙은 두 개면 충분해요. 무엇을 했는지 먼저 쓰고, 왜 했는지를 뒤에 붙여요.

이렇게 적혀 있으면이렇게 바꾸면왜 나은가
수정예약 화면 전화번호 칸을 필수로 바꿈석 달 뒤에 이 줄만 보고도 어디를 건드렸는지 알아요
버그 픽스장바구니 합계가 0원으로 나오던 것 고침같은 증상이 또 나면 이 줄로 찾아서 그때 무엇을 했는지 봐요
최종주문 완료 문자 문구 교체"최종"은 다음 커밋이 찍히는 순간 거짓말이 돼요
ㅇㅇ쿠폰 중복 사용 막기, 손님 문의 접수분왜 했는지가 붙어 있으면 되돌릴지 말지를 판단할 수 있어요
여러 작업 한꺼번에작업마다 나눠서 각각 한 줄씩한 줄에 세 가지를 적고 있으면 덩이를 잘못 잘랐다는 신호예요

확인해 보세요

화면 색을 바꾸고, 결제를 붙이고, 오타 하나를 고쳤어요. 커밋을 몇 번 찍는 게 나을까요?

저장·백업·배포와 뭐가 달라요

이 네 가지가 자꾸 한 덩어리로 묶여서 이야기돼요. 하는 일이 전부 달라요. 표로 한 번에 갈라 둘게요.

하는 일무엇이 일어나나안 하면 생기는 일
파일 저장지금 파일을 새 내용으로 덮어써요. 이전 모습은 남지 않아요방금 고친 게 아예 반영이 안 돼요
커밋이 시점 모습을 한 덩이로 기록에 남겨요. 아직 내 컴퓨터 안이에요되돌아갈 자리가 안 생겨요
깃허브에 올리기내 컴퓨터에 쌓인 덩이들을 바깥 창고로 보내요컴퓨터가 고장 나면 기록까지 같이 사라져요
배포손님이 보는 화면을 새 것으로 바꿔요다 고쳤는데 손님 화면만 그대로예요

순서를 외우면 헷갈릴 일이 없어요. 저장하고, 커밋하고, 올리고, 배포해요. 그래서 "커밋했어요"라는 말은 아직 손님 화면이 안 바뀌었다는 뜻이에요.

백업과도 달라요

백업은 손님이 남긴 주문과 예약까지 통째로 사본을 뜨는 일이에요. 커밋은 코드가 어떻게 바뀌었는지만 다뤄요. 커밋을 아무리 잘 찍어도 지워진 주문 기록은 안 돌아와요. 둘은 서로를 대신하지 못해요.

실제로 겪는 장면

장면 1 · 외주 개발자가 말했다

그건 아직 커밋 안 했어요. 제 컴퓨터에만 있어요.

아직 기록에 안 들어갔고 바깥 창고에도 없다는 뜻이에요. 그 사람 컴퓨터에만 있는 상태라, 그 컴퓨터가 고장 나거나 연락이 끊기면 사장님 손에 남는 게 없어요. 되물을 한마디는 정해져 있어요. "오늘 안에 커밋해서 올려 주실 수 있나요." 작업이 다 끝나야 올릴 수 있는 게 아니에요. 중간 상태도 얼마든지 올려 둘 수 있어요.

장면 2 · 되돌리려는데 못 되돌렸다

어제 것으로만 돌리면 되는 거 아니에요? 돌렸더니 멀쩡하던 것도 다 사라졌어요.

하루치를 한 덩이로 찍었기 때문이에요. 그 덩이 안에 고쳐야 할 것과 멀쩡한 것이 같이 들어 있어서, 상자째 빼는 순간 멀쩡한 것도 같이 나갔어요. 되돌리기 기능이 부족한 게 아니라 덩이를 자른 방식의 결과예요. 다음부터 작게 자르면 같은 사고가 안 생겨요.

두 장면의 교훈이 같아요. 커밋은 사고가 난 뒤에 값어치가 드러나요. 평소에 잘 자르고 잘 적어 두는 값은 몇 초고, 안 해 뒀을 때 치르는 값은 며칠이에요.

자주 묻는 것

Q. 코드를 볼 줄 모르는데 커밋을 알아야 하나요?
찍는 건 AI나 개발자가 해요. 사장님이 알아야 하는 건 두 가지예요. 지금 작업이 커밋됐는지, 그리고 그 목록을 어디서 보는지요. 이 둘만 알면 "언제부터 이상해졌나요"에 스스로 답을 찾아갈 수 있어요.
Q. 바이브캠퍼스에서 만드는 동안에도 커밋을 해야 하나요?
만드는 동안에는 신경 쓸 일이 거의 없어요. 커밋이 필요해지는 건 코드를 내려받아 내 손에 두거나 깃허브에 올려 두고 고치기 시작할 때예요. 그때부터는 고칠 때마다 덩이를 남기는 게 안전망이 돼요.
Q. 이미 찍은 커밋의 메시지를 고칠 수 있나요?
방금 찍은 것은 고칠 수 있어요. 다만 이미 바깥 창고에 올린 뒤라면 남이 받아 간 기록과 어긋날 수 있어서 조심해야 해요. 맡기고 있다면 "이미 올린 커밋은 손대지 말고 새로 하나 찍어 달라"고 하는 편이 안전해요.
Q. 커밋을 지울 수 있나요?
지우는 방법이 있지만 기본은 지우지 않는 거예요. 기록을 지우면 나중에 사고를 추적할 근거가 같이 사라져요. 잘못 들어간 코드는 지우는 대신 되돌리는 커밋을 새로 하나 찍는 방식이 보통이에요. 기록은 그대로 남고 상태만 원래대로 돌아와요.
Q. 실수로 비밀번호를 커밋에 넣었어요.
파일에서 지우고 다시 찍는 것으로는 안 끝나요. 옛 덩이 안에 그대로 남아 있어서 누구든 꺼내 볼 수 있어요. 순서가 정해져 있어요. 그 비밀번호를 지금 폐기하고 새로 발급받는 것이 먼저고, 기록 정리는 그다음이에요. 키 관리 쪽에 폐기 절차가 있어요.
Q. 커밋 목록은 어디서 보나요?
코드가 깃허브에 올라가 있으면 웹 화면에서 목록으로 볼 수 있어요. 날짜와 메시지가 최신 순으로 늘어서 있고, 한 줄을 누르면 그때 무엇이 바뀌었는지 나와요. 사장님이 들여다볼 일이 있는 화면은 대개 여기 하나예요.

하나 더

"그 작업은 커밋했어요"라는 말을 들었어요. 지금 손님 화면은 어떤 상태일까요?

직접 해보기

고친 것을 한 덩이로 정리해 달라고 해보세요

지금 만들고 있는 것이 있으면 스튜디오에서 이렇게 말해 보세요. "지금까지 바뀐 걸 한 덩이로 정리하고, 무슨 작업이었는지 한 줄로 적어 주세요." 돌아온 한 줄이 곧 커밋 메시지 연습이에요. 잘 적힌 한 줄과 "수정" 한 줄의 차이가 눈으로 보여요.

스튜디오 열기

더 깊이 (안 읽어도 괜찮아요)

고유 번호가 왜 그렇게 긴가 · 커밋마다 붙는 긴 영문·숫자 번호는 사람이 지은 이름이 아니라 그 시점 내용에서 계산해 낸 값이에요. 내용이 한 글자만 달라도 번호가 통째로 달라져요. 그래서 번호가 같으면 내용도 같다는 뜻이고, 여러 사람이 각자 받아 간 기록이 서로 같은지 이 번호로 대조해요. 개발자들이 해시라고 부르는 것이고, 말할 때는 앞 일곱 자리만 잘라 쓰는 관례가 있어요.

담을 것을 고르는 단계가 따로 있는 이유 · 고친 파일이 다섯 개인데 그중 두 개만 이번 덩이에 넣고 싶을 때가 있어요. 그래서 커밋 앞에 담을 것을 고르는 단계가 하나 더 있어요. 상자에 넣을 물건을 먼저 골라 두고 마지막에 봉하는 것과 같아요. 이 단계가 있어서 덩이를 작게 자를 수 있고, 이 단계를 건너뛰고 눈에 보이는 걸 전부 담는 습관이 하루치 한 덩이 사고의 시작이에요.

커밋 목록이 곧 작업 기록이 돼요 · 맡겨서 만들고 있다면 커밋 목록이 언제 무엇을 했는지에 대한 기록이 돼요. 진행이 더디게 느껴질 때 말로 다투는 대신 목록을 같이 보면 돼요. 다만 목록은 일한 양이 아니라 바뀐 내용이에요. 한 줄 고치는 데 하루가 걸리는 작업도 있어서, 개수로 사람을 평가하는 용도로는 안 맞아요. 대신 계약서에 "작업물은 지정한 저장소에 커밋으로 남긴다"는 한 줄을 넣어 두면 넘겨받을 때 다툼이 크게 줄어요.

이것만 기억하세요

  • ·커밋은 이번에 고친 것만 담아 라벨을 붙여 봉하는 상자 하나예요
  • ·덩이는 되돌리고 싶어질 최소 단위로 잘라요. 하루치를 한 번에 찍지 않아요
  • ·메시지는 무엇을 했는지 먼저, 왜 했는지를 뒤에 한 줄로 적어요
  • ·저장하고, 커밋하고, 올리고, 배포해요. 커밋만으로는 손님 화면이 안 바뀌어요
  • ·비밀번호와 키는 담지 않아요. 이미 담겼으면 폐기가 먼저예요
VibeCampus新規ビルド