좋은 커밋은 작고 되돌리기 쉽습니다. 기준은 간단합니다. 커밋 메시지에 "그리고"가 들어가면 나누는 편이 좋습니다.
나쁜 예:
fix: 로그인 버그 수정 그리고 버튼 색 변경 그리고 오타 수정
좋은 예:
fix: 로그인 실패 시 무한 로딩 수정
style: 로그인 버튼 색상을 브랜드 컬러로 변경
docs: 로그인 안내 문구 오타 수정
작은 커밋은 리뷰하기 쉽습니다. 문제가 생겼을 때 어느 변경이 원인인지 찾기도 쉽고, 필요한 커밋만 골라 되돌리거나 다른 브랜치로 옮기기도 쉽습니다.
반대로 한 커밋에 여러 의도가 섞이면 되돌리기가 어려워집니다. 로그인 버그 수정만 되돌리고 싶은데 버튼 색과 문서 수정까지 같이 묶여 있기 때문입니다.
1회차에서 배운 스테이징 영역은 "커밋할 것만 골라 무대에 올리는 곳"이었습니다.
$ git add login.ts
$ git commit -m "fix: 로그인 실패 시 무한 로딩 수정"
$ git add README.md
$ git commit -m "docs: 로그인 안내 문구 갱신"
파일을 한꺼번에 수정했더라도 커밋은 의도별로 나눌 수 있습니다. 스테이징은 좋은 커밋 단위를 만들기 위한 도구입니다.
커밋 메시지가 "A 그리고 B"가 되면 쪼개세요. 한 커밋은 한 가지 의도를 설명해야 합니다.
이제 어제 clone한 저장소에서 origin과 upstream이 각각 무엇을 가리키는지 정리합니다.