레퍼지토리에 README.md 파일과 main.py를 각각 수정한 후 commit을 어떻게 해야할까? commit의 제목을 어떻게 써야할지? 내용을 어떻게 써야할지? 고민이 될 것이다.
예를 들어 README.md가 문서작성에 쓰이는 파일이고, main.py는 주로 쓰는 소스코드가 적힌 기능개발을 위해 쓰이는 파일이라고 생각해보자. 두 파일의 연관이 있다면 괜찮지만 연관성이 없는 파일들을 한번에 commit을 하게 된다면 이 둘중에 하나라도 어떤 작업이 일어났는지를 찾기가 어려워진다.
따라서 연관이 없는 각각의 파일작업을 한 후에는 commit을 한꺼번에 하는 것이 아니라 문서 단위로 나눠서 작업단위를 구분해줘야한다.
commit 할 때 기억해야 할 것
- commit은 동작 가능한 최소단위로 자주 할 것.
- 해당 작업단위에 수행된 모든 파일 변화가 해당 commit에 포함되어야 함.
- 모두가 이해할 수 있는 log를 작성할 것.
Open Source Contribution시 영어가 강제되지만, 그렇지 않을 경우 팀 내 사용 언어를 따라 쓸 것.- 제목은 축약하여 쓰되(50자 이내), 내용은 문장형으로 작성하여 추가설명 할 것.
- 제목과 내용은 한 줄 띄워 분리할 것.
- 내용은 이 commit의 구성과 의도를 충실히 작성할 것.
git commit -m
은 좋지 않은 습관이다
그렇다면 commit을 어떻게 나눠서 할 수 있을까? 각각의 파일을 따로따로 git add A=> git commit => git add B => git commit
진행한 후 한꺼번에 push
를 시키면 된다.
$ git add README.md
$ git status // README.md가 앞접시에 올라온 것을 확인할 수 있다. (아직 메인접시에 main.py가 남아있다.)
$ git commit
$ git status //확인하는 습관 들이기
$ git add main.py
$ git status
$ git commit
$ git status
이렇게 작업 단위로 commit을 진행하면서 commit의 내용을 일관성 있지 않게 작성을 하게 된다면, 소용이 없게 된다. 레퍼지토리를 보는 모두가 이해할 수 있는 언어로 이해할 수 있는 형식에 맞춰 작성을 하는 것이 좋다.
conventional commit
- 커밋 제목은 50자 이내로 요약하여 작성한다
- 제목과 내용사이 한 칸
- prefix를 사용하여 한 눈에 커밋의 용도를 알기 쉽게 한다
무엇보다 prefix를 사용해 feat
, docs
등 말머리를 보기만 해도 어떤 이유로 commit이 진행되었는지를 확인할 수 있도록 하는 것이 중요하다.
prefix
- feat: 기능 개발 관련
- fix: 오류 개선 혹은 버그 패치
- docs: 문서화 작업
- test: test 관련
- conf: 환경설정 관련
- build: 빌드 관련
- ci: Continuous Integration 관련
- refector: refactoring
docs: Create index.html : 파일 생성 후
feat: Print 'hello'
feat: Add if Statement
feat: Create fzzbuzz.py
feat: Print fizz if i is times of 3
feat: Print fizz if i is times of 5
feat: do fizzbuzz more pythonic
refactor: Do fizzbuzz with 1 if statement
fix: Rename README.md to LICENSE