컨벤셔널 커밋 소개

2652 단어 beginnersgitgithub
학생으로서 커밋 메시지에 대한 표준이 있는지 항상 궁금했습니다. 표준화하는 것이 이치에 맞을 것이라고 생각했고 새로운 역할을 시작하면서 Conventional Commits에 대해 알게 되었습니다. 많은 사람들이 어떤 규칙도 따르지 않고 팀과 함께 작업할 때 표준화하지 않으면 커밋 로그가 상당히 혼란스럽고 정보가 없게 될 수 있습니다.

기존 커밋은 커밋 메시지에 사람과 기계가 읽을 수 있는 의미를 추가하기 위한 사양입니다. 명시적인 커밋 히스토리를 만드는 데 도움이 되는 쉬운 규칙 세트를 제공하는 커밋 메시지 위에 있는 가벼운 규칙으로, 그 위에 자동화 도구를 더 쉽게 작성할 수 있습니다. 이 규칙은 SemVer 커밋 메시지에서 수행된 기능, 수정 사항 및 주요 변경 사항을 설명함으로써 일치합니다.

기존 커밋은 다음과 같은 구조를 갖습니다.

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]


기존 커밋을 사용하면 여러 유형의 커밋을 만들 수 있습니다.
  • feat: 코드베이스에 새 기능을 추가합니다(시맨틱 버전 관리의 MINOR).
  • fix: 버그를 수정합니다(Semantic Versioning의 PATCH와 동일).
  • docs: 설명서가 변경되었습니다.
  • style: 코드 스타일 변경(세미콜론, 들여쓰기...).
  • refactor: 공용 API를 변경하지 않고 코드를 리팩터링합니다.
  • perf: 코드 성능을 업데이트합니다.
  • test: 기존 기능에 테스트를 추가합니다.
  • chore: 사용자에게 영향을 주지 않고 무언가를 업데이트합니다(예: package.json에서 종속 항목 범프).



  • 위의 몇 가지 예는 다음과 같습니다.

    몸이 없는 커밋




    feat: allow provided config object to extend other configs
    



    docs: correct spelling of CHANGELOG
    


    와 커밋! 브레이킹 체인지에 주의를 끌기 위해




    feat!: send an email to the customer when a product is shipped
    


    범위로 커밋하고 ! 브레이킹 체인지에 주의를 끌기 위해




    feat(api)!: send an email to the customer when a product is shipped
    


    다중 단락 본문 및 바닥글로 커밋




    fix: prevent racing of requests
    
    Introduce a request id and a reference to latest request. Dismiss
    incoming responses other than from latest request.
    
    Remove timeouts which were used to mitigate the racing issue but are
    obsolete now.
    
    Story-ref: #1234
    


    이익



    가독성



    Commit은 더 설명적이어서 팀 동료와 이해 관계자가 커밋을 더 쉽게 읽고 이해할 수 있습니다. 또한 기여하기가 더 쉬워집니다.

    변경 로그



    변경 로그를 자동으로 생성할 수 있습니다.

    버전 제어



    도착한 커밋 유형에 따라 시맨틱 버전 범프를 자동으로 결정하는 데 도움이 됩니다.

    변경사항 되돌리기



    커밋당 하나의 작업만 수행되는 경우 변경 또는 git 충돌을 되돌리기가 더 간단해집니다.

    좋은 웹페이지 즐겨찾기