본문 바로가기
C.W.K.
Stream
Lesson 04 of 04 · published

자주, 작게, 의도적으로 commit하기

~18 min · zen, habit

Level 0추적 전 새싹
0 XP0/47 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

일찍, 자주, 의도적으로 commit해

대부분의 Git 조언은 어떤 명령과 flag, workflow를 쓸지 말해. 더 가르치기 어려운 기술은 리듬이야. 언제, 얼마나 자주, 어떤 의도로 commit할 것인가 하는 문제지. 의도적으로 commit하는 팀은 무언가가 끝날 때만 commit하는 팀과 코드에 맺는 관계가 달라. 이 리듬이 자리 잡으면 이 quest에서 다룬 고통 대부분이 줄어들어.

일찍 commit해. Commit은 milestone보다 checkpoint에 가까워. compile되고 대략 작동하는 일관된 작업 단위가 생긴 순간 commit해. 완성을 기다리지 마. 완성은 한 session 안에 잘 오지 않는 높은 기준이야. 작고 이른 commit은 reflog에 촘촘한 지점을 남기고, 네 작업을 bisect하며, 이미 작동한 부분을 잃지 않고 실험을 포기할 자유를 줘.

자주 commit해. 한 작업 session에는 commit이 여러 개 나오는 게 자연스러워. 각 commit이 '빈 입력을 처리한다', '오타를 고친다', 'helper를 추출한다' 같은 생각 하나를 붙잡게 해. push하기 전에 interactive rebase로 squash할지 그대로 둘지는 팀 정책에 따라 정하면 돼. 자주 commit하는 목적은 공개 이력의 모양보다 session 중 안전망을 만드는 데 있어.

의도적으로 commit해. 각 commit은 어떤 개념을 한 걸음 나아가게 했나?라는 질문에 답해야 해. 답에 '그리고'가 필요하면 commit 둘일 가능성이 커. 50자 안팎으로 답을 말할 수 없다면 아직 일관된 단위가 아닐 수 있어. 분명한 message를 쓰는 과정은 무엇이 바뀌었는지 스스로 이해했는지 확인하는 검토야.

이 리듬은 일 년 뒤 크게 보답해. 일찍, 자주, 의도적으로 commit한 engineer는 읽을 수 있는 reflog, 자기 옛 작업을 빠르게 bisect할 지점, 살릴 부분을 잃지 않고 막힌 branch를 버릴 자유, 일 년 전 git log에서 당시 생각을 되찾을 단서를 가져. 끝난 뒤에만 commit하면 기능마다 거대한 commit 하나와 성긴 복구 지점만 남고 자기 코드도 낯선 사람이 쓴 것처럼 보여. 기술은 누적되고, 그 부재도 누적돼.

Code

진짜 작업 세션, commit 으로·text
# 기능에 두 시간 세션, 압축:
abc1234 feat(search): hold empty result state explicitly
def5678 test(search): cover empty array via /api/search
9876543 fix(search): handle missing query param fallback
fedcba0 refactor(search): extract result-formatter helper
1122334 docs(api): document /search empty-result shape
aabbccd chore(search): tidy imports after refactor

# 그대로 push, 또는 review 전 rebase -i 로 squash.
# 어느 쪽이든 SESSION 에 깨끗한 checkpoint 6 개 있었음.
# Reflog 가 fine resolution. Bisect 가 어느 거나 분리 가능.
리듬을 위한 도움 alias·bash
# 빠른 status:
git config --global alias.s 'status -sb'

# 예쁜 graph log:
git config --global alias.lg 'log --oneline --graph --decorate --all'

# Interactive add + commit (일상 습관):
git config --global alias.cap '!git add -p && git commit'

# 메시지 안 바꾸고 빠른 amend:
git config --global alias.fixed 'commit --amend --no-edit'

# 가장 최근 commit 에 든 거 표시:
git config --global alias.last 'log -1 -p'

# 이제 네 루틴:
git s          # status
git add -p
git commit -m "fix(...): ..."
git lg         # graph 감상
git fixed      # 뭔가 잊었으면
git last       # 뭐 land 했는지 확인

External links

Exercise

다음 한 시간 이상의 실제 coding session에서 일관된 checkpoint마다 제대로 된 message로 commit해. 한 시간에 commit 다섯 개 이상을 목표로 해봐. session 뒤 branch에서 git log --oneline을 읽고 리듬이 어색했는지, 어디서 거대한 commit 하나로 미끄러질 뻔했는지, 이 log가 석 달 뒤 무엇을 알려줄지 적어.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.