개발 영어 문법

커밋 제목은 명령형: Fix, not Fixed

코드베이스에 내리는 지시로 쓴다

1장 · Unit 1 · 명령형 · 읽는 시간 약 10분

목차 · 진행 0%

    긴 단어를 입력하면 글자가 슬라이드 밖으로 넘치는 버그를 고쳤다. 한국어로는 "긴 입력 시 슬라이드 넘침 수정"쯤으로 쓸 커밋이다. 영어로 쓰려니 시제(tense)가 고민된다. 이미 고쳤으니 과거형(past simple) Fixed가 맞을 것 같고, 이 커밋이 고친다는 뜻이면 Fixes도 될 것 같다.

    이 장에서 쓰는 문법 용어
    용어뜻
    동사 원형(base form)아무것도 붙지 않은 동사의 기본 꼴. 사전 표제어로 실린 꼴이다. 예: Can you fix the typo?
    과거형(past simple)지난 일을 말하는 동사 꼴. 규칙 동사는 동사 원형에 -ed를 붙인다. 예: I fixed the typo yesterday.
    3인칭 단수(third-person singular)나(I)도 너(you)도 아닌 하나(it, this commit). 현재형(present simple, 지금·늘 그렇다고 말하는 꼴)에서는 이 주어 뒤의 동사에 -s가 붙는다. 예: This commit fixes the typo.
    명령형(imperative)상대에게 무엇을 하라고 시키는 문장. 주어 없이 동사 원형으로 시작한다. 예: Run the tests before you push.
    예측먼저 답해 보세요

    Git 프로젝트의 관례에 가장 잘 맞는 커밋 제목은?

    규칙: 동사 원형으로 시작한다

    A. 제목은 동사 원형(base form)으로 시작한다. 주어(subject)도 시제도 없이 동사 원형부터 쓴다. 과거형(Fixed)이나 3인칭 단수(third-person singular) 현재형(present simple)인 Fixes가 아니다.

    • Fix race condition in token refresh
    • Add retry to the payment request
    • Remove deprecated sort option

    B. 확인 문장에 넣어 본다. 맞게 썼는지 헷갈리면 제목을 "If applied, this commit will ___" 뒤에 붙여 읽어 본다(Chris Beams, How to Write a Git Commit Message). will remove deprecated sort option은 문장이 되고, will removed …나 will removes …는 되지 않는다.

    C. 첫 글자는 대문자, 끝에는 마침표를 찍지 않는다. 제목은 문장이 아니라 머리글처럼 다룬다. 같은 글이 이 두 규칙도 권한다. 팀이 Conventional Commits(fix: …처럼 종류를 앞에 붙이는 관례)를 쓴다면 콜론 뒤 첫 글자의 대소문자는 팀 관례를 따르되, 명령형은 그대로 유지한다. Conventional Commits 명세는 동사 형태를 정하지 않지만, 예시는 fix: prevent racing of requests처럼 명령형이다(Conventional Commits 1.0.0).

    Git도 스스로 커밋을 만들 때 명령형을 쓴다. git merge가 만드는 제목은 Merge branch '…', git revert가 만드는 제목은 Revert "…"다. 내가 쓴 제목이 이런 제목들 옆에 나란히 놓인다고 생각하면 형태를 맞추기 쉽다.

    커밋 메시지 전체를 어떻게 나누고 무엇을 쓸지는 커밋 메시지와 원자적 커밋 노트에 있다. 이 유닛은 제목 첫 단어의 문법만 다룬다.

    표현: 제목을 여는 동사

    동사언제예
    Add없던 것을 새로 넣을 때Add empty state to the order list
    Remove있던 것을 뺄 때Remove unused props from Modal
    Fix버그를 고칠 때. 무엇이 잘못됐는지 같이 쓴다Fix modal not closing on Escape
    Prevent생기면 안 되는 일을 막을 때Prevent double submit on the order form
    Handle빠져 있던 경우를 처리할 때Handle empty response from the search API
    Rename / Move / Extract동작은 그대로 두고 구조만 바꿀 때Extract date formatting into a util
    ReplaceA를 B로 바꿀 때Replace moment with date-fns
    Bump의존성 버전을 올릴 때Bump vite from 7.0.0 to 7.0.1
    Revert이전 커밋을 되돌릴 때Revert "Add retry to the payment request"

    Update와 Change는 쓰기 쉽지만 무엇을 어떻게 바꿨는지 말해 주지 않는다. Update button styles보다 Increase button padding on mobile이 히스토리에서 훨씬 잘 읽힌다. 더 구체적인 동사가 떠오르면 그쪽을 고른다.

    한국어 다리'~ 수정'을 영어 제목으로
    한국어로는'로그인 버그 수정', '번역 키 추가'처럼 명사(noun)로 끝냅니다. 시제가 드러나지 않습니다.
    영어로는Fix login bug, Add translation keys처럼 동사 원형으로 시작합니다.
    같은 점둘 다 주어 없이 짧게, 무엇이 바뀌는지만 씁니다.
    그대로 옮기면명사형 종결을 그대로 옮기면 Login bug fix처럼 명사구(noun phrase)가 됩니다. 이미 고쳐 놓았다는 느낌을 살리면 Fixed가 됩니다. 둘 다 명령형 제목 사이에서 형태가 튑니다. '수정'을 Modify로 옮기면 무엇을 바꿨는지도 흐려집니다.

    함정 찾기: AI가 쓴 커밋 제목

    함정 찾기이 커밋 제목들 중 관례에 어긋난 줄은?
    내가 AI에게 한 요청
    오늘 한 작업 다섯 개를 영어 커밋 제목으로 써 줘.
    • Git 관례에 맞게

    의심스러운 줄을 모두 눌러 표시한 뒤 “검토 끝”을 누르세요. 함정은 2개입니다.

    연습

    확인 문제연습

    1. "검색 API가 빈 응답을 줄 때 처리 추가"를 영어 커밋 제목으로 옮기면?

    2. "If applied, this commit will ___" 뒤에 붙였을 때 문장이 되는 것은?

    3. 날짜 포맷 함수를 유틸 파일로 옮기기만 하고 동작은 그대로다. 커밋 제목으로 가장 정보가 많은 것은?

    다음Unit 2. 방금 한 일 보고: 현재완료와 과거리뷰어에게 "방금 고쳤어요"라고 보고할 때는 시제가 달라집니다.

    『개발 영어 문법』 Unit 1. 커밋 제목은 명령형: Fix, not Fixed · younggeun0. Claude와 함께 썼습니다. 사실 주장은 공식 문서로, 데모 결과는 실제 브라우저로 확인했습니다.

    보기 옵션