1. Git & GitHub 의 정의
- Git은 분산 버전 관리 시스템이다.
- Git을 사용해서 코드의 버전을 관리하면서 손쉽게 코드를 이전으로 롤백하거나, 분리된 환경(브랜치)에서 개발 후 다른 환경과 병합하는 등의 과정을 손쉽게 활용할 수 있다.
- GitHub은 Git의 원격 저장소입니다. GitHub을 이용해 개인적으로만 사용할 수 있었던 Git의 기능들을 인터넷을 이용해서 여러 사람들이게 공유하고, 팀원들과 공동으로 작업할 수 있게 되었다.
- Git과 GitHub은 현재 개발 생태계에서 분산 버전 관리 시스템의 표준이다. 대부분의 개발팀이 Git과 GitHub 또는 GitHub과 유사한 원격 저장소 시스템(GitLab, BitBucket) 등을 활용하면서 작업한다.
2. Commit Message
Git & GitHub은 이제는 버전 관리 시스템을 넘어서서 문서와 협업 툴의 역할 또한 수행하고 있다. 개발자가 다른 개발자의 코드를 분석할 때 이 코드가 어떤 목적을 가지고 언제 작성되었는가를 확인하기 위해서 가장 먼저 확인하는 것은 Git의 Commit Message 이다. 실제로 이를 위해서 git blame 이란 명령어도 git에 존재한다. 저 명렁어를 통해서 특정 코드를 누가 언제, 어느 커밋에서 수정했는지 알 수 있다. 그런데 만약 이때 commit message가 제대로 작성되어 있지 않다면, “작업중”, “커밋", “시작", “수정" 이런 커밋 메세지들로만 이루어져 있다면 이 코드의 히스토리를 파악하기가 힘들어진다.
따라서 커밋 메세지를 올바르게 작성하는 것은 기본적으로 지켜져야 할 사항이다. 여기에 덧붙여 개발자는 팀을 이루어서 함께 작업을 하기때문에 팀 내에서 일관된 커밋 메시지 규칙을 정하는 것은 필수이다. 규칙을 정하지 않고 개인이 원하는 형식으로 각자 작성한다면 결국 한 팀에서 한국어, 영어, 불어, 일어, 중어, 스와힐리어 등 각자 다른 언어를 사용하는 것과 다름 없는 상황이다. 커밋 메시지를 무조건 이렇게 해야한다라는 정해진 규칙은 없다. 커밋 메세지에 어떤 내용들이 포함되어야 할 지 생각해보고, 팀 내에서 어떤 규칙을 사용할지 레퍼런스를 찾아보고 논의하는 과정을 거치면서 다듬어나가보자!
- Git과 GitHub은 단순한 버전관리도구를 넘어선 문서 & 협업 툴이다.
- Git의 가장 기본적인 문서인 커밋 메시지를 잘 작성하는 것이 중요하다.
- 팀으로 작업을 진행한다면 팀의 커밋 메세지 규칙을 정하는 것은 필수적이다.
- 참고자료
3. History 관리 및 브랜치 관리 전략
Git을 사용하면서 앞서 강조했듯이 개별 커밋 메세지도 중요하지만 프로젝트의 전체 흐름이 어떻게 이루어져 있는지를 보기위해서는 전체 커밋의 히스토리를 확인하게 된다. 이 때 만약 master의 commit history가 뒤죽박죽으로 섞여있으며 불필요한 Working In Progress 와 같은 커밋들이 섞여있다면 전체 히스토리를 파악하기가 힘들어질 것이다. 그리고 히스토리 관리가 제대로 되어 있지 않다면 커밋들이 늘어나면 늘어날수록 점점 맥락을 파악하기가 힘들어지게 된다.
그러면 history를 깔끔하게 유지하기 위해서 커밋을 유의미한 단위로만 해야하는 것 일까? 명확한 단위로만 떨어지는 결과물일때 커밋을 남겨야 할까? 일반적으로 그렇게 하면 커밋을 못한 상태로 작업물을 잃어버릴 우려가 크고 작업중에 최대한 많은 시점에 커밋을 남겨야지 중간중간 돌아가면서 확인하기가 쉬운데 그러한 이점을 누리기가 힘들어진다.
따라서 작업중일때는 원하는만큼 커밋을 남기되, 최종적으로 브랜치의 작업이 완료되고 PR을 통해서 master에 머지 요청을 하기 전 시점에 적절하게 원하는 형태로 커밋을 정리해주는 것이 좋다. Git에서는 squash 를 통해서 여러 커밋들을 하나로 합칠 수 있다. squash 명령을 단독으로 수행할 수는 없으며 일반적으로 rebase 동작을 하면서 interative 모드를 이용해서 squash를 진행해준다. 참고자료와 검색, 팀원과의 토론을 통해서 팀 내에서 히스토리를 어떻게 깔끔하게 관리할 수 있을지 고민해봐야 할 것 같다.
- 참고자료
'Infra & Tool > Git & Github' 카테고리의 다른 글
CI/CD with GitHub Actions (0) | 2022.10.14 |
---|