[협업/Git/Jira 기초] #3 컴공 팀 프로젝트가 처음인 분들께... 💛Git/Commit Convention
목차
- Git flow
- Git Issue Template
- 사용법
- Git Pull Request Template
- Commit Convention
- 실제 사용 예시
1. Git Flow
🍎 사용 목적
큰 프로젝트일수록 협업하는 인원도 많아집니다.
이때 여러 인원이 하나의 repository에 commit, push, merge하는 과정에서
누가/어떤 내용을 개발(또는 수정)했는지 관리하기 복잡해질 수밖에 없습니다.
이런 복잡성을 없애고, 프로젝트 관리를 쉽게 만들어주기 위한 약속이 Git Flow입니다.
branch를 어떻게 활용해야 하는지, commit message는 어떻게 작성해야 좋은지 등등
git에 관한 기본 약속들을 지키면 커밋 내용만 보고 어떤 내용을 수정/개발했는지 바로 파악할 수 있고,
프로젝트가 현재 어떤 상황인지도 알기 쉬워집니다.
깃 플로우에 관해 읽어보면 좋을 포스트: 우린 Git-flow를 사용하고 있어요!
Git-flow 주요 내용
Git-flow에는 5가지 종류의 브랜치가 존재합니다.
- 항상 유지되는 메인 브랜치들
- master: 제품으로 출시될 수 있는 브랜치
- develop: 다음 출시 버전을 개발하는 브랜치 < 주로 이 브렌치에 머지합니다!
- 일정 기간 공안만 유지되는 보조 브랜치들
- feature: 기능을 개발하는 브랜치
- release: 이번 출시 버전을 준비하는 브랜치
- hotfix: 출시 버전에서 발생한 버그를 수정 하는 브랜치
- 등등 아래 커밋 컨벤션의 태그 네임도 사용합니다.
위 브랜치의 용도에 맞게 브랜치명을 만들고,
그 브랜치에서 코드를 작성함으로써 코드를 기능별로 분류할 수 있게 됩니다.
예를들어 로그인 기능을 개발한다고 하면,
기능을 개발하는 것이므로 feature 브랜치명을 가져야 할 것이고,
기능 상세 이름엔 login이 들어가면 되겠네요.
최종적으로 생성할 브랜치명은 feature/login이 되겠죠?
(+여기에 깃이슈 번호나, 지라 티켓 번호를 사용하여 브랜치를 만든다면 feature/#31-login, feature/#PETF-1_login 이렇게도 될 수 있습니다.)
(feature-login, feat: login 등등 다양합니다.)
이제 이 브랜치로 이동하고, 그 안에서 로그인 관련된 코드만을 작성하고 커밋/푸시/머지까지 하면 되는 것입니다!
2. Git Issue Template
🍎 사용 목적
각자 개발할 내용을 정리하고, 다른 사람의에게 개발 진행 상황을 쉽게 알리기 위해 사용합니다. 태그를 사용해 프로젝트 관리 시 개발/수정한 내용, 담당자 등의 정보를 한눈에 알기 쉽도록 도와줍니다.
Git issue template는 보통 아래 형식입니다.
## 화면 이름
- Figma에 나온 화면 이름
## 작업 내용 설명
- 어떤 작업 할 것인지 설명
## 필요 태스크
- [ ] 작업 1
- [ ] 작업 2
2-1. issue template 사용 방법
1. 작업을 시작하기 전, 깃허브에서 issue 탭을 클릭하고, Get Started 버튼을 클릭합니다.
2. 제목은 작업할 내용의 태그명을 넣고, 작업할 내용을 작성하면 됩니다.
이제 템플릿에서 안내하는 내용을 작성하고, 오른쪽에서 제목에 들어간 태그와 자신의 태그를 선택합니다.
그후 Submit new issue버튼을 클릭하면 아래와 같은 이슈가 생성됩니다.
기능 개발이니 feat, ui 작업도 함께하니 ui 태그를 선택한 것을 볼 수 있고,
이슈 작성자 자신의 태그도 포함한 것을 확인할 수 있습니다.
3. 이때 주목해야 할 점은 제목 뒤의 번호 #74입니다. 이 번호를 커밋 메시지에 함께 적어야 해당 이슈 아래로 커밋이 올라갑니다.
이런 식으로 이슈를 생성하면 이슈 탭으로 들어갔을 때, 아래와 같이 각 팀원들이 어떤 일을 얼마나 진행중인지 바로 파악할 수 있습니다.
3. Git Pull Request Template
🍎 사용 목적 위와 동일합니다!
Pull Request template(PR)는 저희는 보통 아래 형식을 사용했습니다.
## 작업 사진
## 작업 설명
/* 상세히, 보는 사람 이해 쉽게 */
## 궁금한점
## 어려웠던점
깃 이슈를 작성하는 방법과 동일합니다. 내용만 다를 뿐!
4. Commit Convention
🍎 사용 목적 커밋 내용을 보고 어떤 내용을 수정/개발했는지 바로 파악할 수 있기 위해서 사용합니다.
관련 포스트: Git - 커밋 메시지 컨벤션
커밋 시 개발 내용을 아래 태그로 나누어 커밋 메시지를 작성합니다.
Tag Name Description
feat | 새로운 기능을 추가 |
fix | 버그 수정 |
design | CSS 등 사용자 UI 디자인 변경 |
ui | ui 개발 |
!BREAKING CHANGE | 커다란 API 변경의 경우 |
!HOTFIX | 급하게 치명적인 버그를 고쳐야하는 경우 |
style | 코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우 |
refactor | 프로덕션 코드 리팩토링 |
comment | 필요한 주석 추가 및 변경 |
docs | 문서 수정 |
test | 테스트 코드, 리펙토링 테스트 코드 추가, Production Code(실제로 사용하는 코드) 변경 없음 |
chore | 빌드 업무 수정, 패키지 매니저 수정, 패키지 관리자 구성 등 업데이트, Production Code 변경 없음 |
rename | 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우 |
remove | 파일을 삭제하는 작업만 수행한 경우 |
ex) [태그명]: [개발 내용] (#이슈 번호 또는 티켓 번호)
[feat]: 로그인 로직 개발 (#13)
작년(2022년) 휴학 때 첨 배운 git flow...
알고나서 너무나 큰 세계에 발을 들인 기분이었다.
브랜치를 나누고, 그 브랜치 안에서 특정 기능만을 개발한다니!!!...
어쩜 이렇게 아름답고 깔끔한 개발 방법이 있을까
이번 졸프에서도 이걸 사용하고 싶어서 이렇게 정리해봤다.
사실 이것도,,, 이런 글 하나만으로 이해할 수 있는 개념이라기엔,, 좀 아쉽지
그래도 빠른 개발을 위해선,,,더보기
처음에 이 개념만 딱 보면 어케 응용해야할지 잘 모를 거 같아서 마지막에 응용법까지 같이 설명하려고 했다.