항해99 54일차 TIL1 - 좋은 커밋 메시지 남기기
일부 내용의 수정이 있습니다.(2023-03-19)
깃과의 처음 만남은 2021년 참여했던 데이터 분석 교육에서이다. 그 때 나와 동료들이 남겼던 커밋메시지를 살펴봤다.
물론 나를 제외한 동료들은 현재 개발과는 관련 없는 일을 하고 있기에 이 커밋 메시지는 추억으로 남겨질 것이다. 하지만 나는 다르다. 나는 개발자가 되어야하기 때문이다. 만약 내가 팀에서 저런 커밋메시지를 날린다면 팀원이 나를 뭐라고 생각할까? 조금 창피할지도 모르겠다.
이런 이유만으로 커밋 메시지를 잘 남겨야하는걸까?
내가 생각하는 커밋 메시지를 잘 남겨야 하는 이유는 다음과 같다.
1. 코드 변경사항을 명확하게 전달할 수 있다.
개발은 보통 함께한다. 다른 개발자들이 내 커밋 이력을 볼 것이다. 그 때 가장 먼저 노출되는 것이 커밋 메시지이다. 좋은 커밋 메시지를 작성해서 동료들이 내가 개발한 내역을 빠르게 파악할 수 있도록 돕자. 참고로 좋은 커밋 메시지를 코드 리뷰 시에도 도움을 준다.
2. 코드 변경사항의 이력을 추적할 수 있다.
코드 변경사항은 보통 프로그램에 버그가 발생하거나 유지보수 할 때 추적하게 된다. 테스트 코드를 작성하면 대부분의 버그를 막을 수 있지만 모든 경우의 수를 막지는 않는다. 로직 설계를 잘못하면 개발자가 고려하지 않은 부분에서 버그가 발생할 수 있기도 하고 등등... 이럴 때 커밋 메시지를 잘 남겨놓는다면 도움이 된다.
이외에도 많은 이유가 있겠지만 내가 지금까지 느낀 점은 여기까지다.
그렇다면 어떤 식으로 커밋 메시지를 남기는게 좋을까? 우선 팀 단위라면 팀을 설득해야한다. 나만 좋은 커밋 메시지를 남긴다고 끝이 아니다. 그러니 동료들부터 설득해야 한다.
동료들을 설득하기 가장 좋은 방법은 문서화라고 생각한다. 깃 컨벤션을 만들고 커밋 양식을 만들자. 다음은 내가 진행했던
항해99 프로젝트의 커밋 메시지 룰이다.
지금보면 제목보다는 접두사 정도가 적절할 것 같다. 접두사는 내가 한 작업이 기능 개발인지, 성능 개선인지, 리팩토링인지 등을 알린다. 접두사에는 아래와 같은 것들이 들어가는데 필요에 따라 추가로 만들어서 팀원들과 약속하면 된다.
그럼 이런 고민이 생길때가 있다. 내가 한 작업은 한 가지 태그로 해결할 수 없는 경우가 있다. 물론 개개인마다 생각은 다르겠지만 한 커밋에 많은 태그를 사용해야한다면 그것은 좋은 커밋이 아닐지도 모른다. 기록은 영원히 남는다. 그렇기 때문에 커밋을 잘 나누어 진행하자.
그래서 좋은 커밋 메시지를 어떻게 남겨야하나?
1. 팀원들과 약속을 해서 커밋 메시지 형식을 만들자.
2. 문서화가 되어 있어야 추후 혼선이 생기지 않는다.
3. 자세한 내용의 경우 나는 이 글을 참고하였다. 좋은 git 커밋 메시지를 작성하기 위한 7가지 약속
4. 마지막으로 좋은 커밋 메시지는 Github의 issue/project 기능과 함께하면 더욱 좋다.