Github Commit & Pull request Template 그리고 git commit convention 정리!

728x90

Git 명령어 정리

Git Commit Convention

https://velog.io/@shin6403/Git-git-커밋-컨벤션-설정하기

이전까지 다른 프로젝트의 깃헙을 볼때 이슈관리도 잘 되고 커밋이 명료하게 잘 되어있어서 어떻게 저렇게 연결하고 작성한걸까 했는데, 방법이 있었다.

 

https://udacity.github.io/git-styleguide/
위 링크에 연결된 Udacity 스타일 가이드를 참조했다.

네이밍 컨벤션, 코딩 컨벤션과 같이 Commit Message를 작성할 때의 약속이라고 보면 된다.
커밋 메시지 구조는 3 단락으로 나뉜다.

type: Subject 

body(optional)

footer(optional)

Type, Subject 규칙

먼저 제목의 Type에 사용할 수 있는 것들

  • Feat: @@ - 새로운 기능 추가
  • Fix - 버그 수정 또는 typo
  • Refactor - 리팩토링
  • Design - UI 디자인 변경
  • Comment - 필요한 주석 추가 및 변경
  • Style - 코드 포맷팅, 세미콜론 누락 등, 코드 변경이 없는 경우(코딩컨벤션만 맞추는 경우)
  • Test - 테스트 코드 추가, 수정, 삭제등 비즈니스 로직 변경이 없는경우
  • Chore - 위에 걸리지 않는 기타 변경사항 (자질구레한 것) (빌드스크립트 수정, image, 패키지매니저 등)
  • Init - 프로젝트 초기 생성
  • Rename - 파일 혹은 폴더명 수정하거나 옮기는 경우
  • Remove - 파일 삭제 작업만 수행한 경우

Subject 규칙은 다음과 같다.

  1. 제목은 최대 50글자
  2. 마침표 및 특수기호 사용X
  3. 첫 글자 대문자 명령문 사용
  4. 개조식 구문으로 작성 (간결하고 요점적인 서술)

개조식 Ex)
Fixed -> Fix,
Added -> Add,
Modified -> Modify

ex) Feat: #1 - 구분선 추가
이렇게 간단히도 괜찮은거 같다. body footer는 어짜피 optional이니까... 함축적으로 커밋하지?

Body 규칙

  1. 한 줄당 72자 내로 작성
  2. 최대한 상세히 작성
  3. 어떻게 보다 무엇을, 왜 변경했는지 대해 작성Footer 규칙
  4. 유형: #이슈번호 형식으로 작성
  5. 이슈 트래커 ID 작성
  6. 여러개의 이슈번호는 ,로 구분

이슈 트래커 유형은 아래와 같다.

  • Fixes - 이슈 수정중 (미해결 상태)
  • Resolves- 이슈를 해결한 경우
  • Ref - 참조할 이슈가 있을때 사용
  • Reiated to - 해당 커밋에 관련된 이슈변호 (아직 해결되지 않은 경우)

ex) Fixes: #45 Related to: #34, #23

예시

Feat: "회원 가입 기능 구현"

SMS, 이메일 중복확인 API 개발

Resolves: #123
Ref: #456
Related to: #48, #45

Git commit template 설정

XCode 에서는 템플릿을 설정해도 나오진 않지만, 터미널이나 다른 IDE 는 되는게 있으니까 정리

 

txt 파일을 만들어 템플릿을 작성한 후 설정해주면 된다.
git config commit.template ./git-commit-template.txt
모든 프로젝트에 일괄적으로 template 적용하는 경우 --global 옵션 추가.
잘 등록되었는지 확인 git config --list


추가로 봐야할 것

이슈 생성 및 브랜치, PR

 

[Github 협업, 이것만은 알자] - Issue & PR

이슈(Issue)란 프로젝트에서 작업해야할 단위라고 할 수 있습니다.개발해야하는 기능 발생, 수정해야할 사항 버그 발생, 리팩터링 해야하는 코드 발생 등 프로젝트에서 발생되는 작업들을 이슈로

velog.io

 

Close #1, Resolve #1 처럼 커밋으로 이슈를 닫는 방법은 main 브랜치(github에 설정한 default branch) 에서만 동작한다.
feature 브랜치에서는 pull request를 통해 닫는 수 밖에 없음


그래서 내 템플릿은?

Commit템플릿

간단 템플릿 예시
Feat: 구분선 추가
Feat: #1 - 구분선 추가 이슈 트래킹 할때

명시적 템플릿

[이슈 키], 타입 : 제목

' 본문

' Resolve: #IssueNo
' Fix: #IssueNo
' Close: #IssueNo

' See also #IssueNo

' ----------------------------------------
' 타입 종류
' * ADD : 새로운 기능 추가
' * MODIFY : 기존 기능 수정
' * FIX : 버그 수정
' * DOCS : 문서 수정
' * TEST : 테스트 코드 추가
' * TESTFIX : 테스트 코드 수정
' * REFACTOR : 코드 리팩토링
' * STYLE : 코드에 영향을 주지 않는 변경사항
' * CHORE : 빌드 부분 혹은 패키지 매니저 수정사항
'
' 제목 규칙
' * 제목 작성 후 공백 한줄을 포함해야, 제목과 본문이 구별됨
' * 제목 첫 글자는 대문자로 작성, 마침표를 사용하지 않음
' * 제목은 명령문으로 사용, 과거형을 사용하지 않음
'
' 본문 규칙
' * 본문 작성 후 공백 한줄을 포함, 본문과 Resolves가 구별
' * 본문의 각 행은 72글자로 제한
' * 본문은 "왜"와 "무엇을"위주로 작성
' * 본문은 행으로 구분되어야 함
'
' ################
' # Remember me ~ Commit Message 규칙
' ## 1. 제목과 본문을 빈 행으로 구분한다.
' ## 2. 제목을 50글자 내로 제한
' ## 3. 제목 첫 글자는 대문자로 작성
' ## 4. 제목 끝에 마침표 넣지 않기
' ## 5. 제목은 명령문으로 사용하되, 과거형을 사용하지 않는다.
' ## 6. 본문의 각 행은 72글자 내로 제한
' ## 7. 어떻게 보다는 무엇과 왜를 설명
' ################

Pull request 템플릿

## 연관이슈
#1, #2
## 작업 상세 내용
## 연관 이슈

> #1, #2

## 작업 내용

> 이번 PR에서 작업한 내용을 간략히 설명해주세요(이미지 첨부 가능)

### 스크린샷 (optional)

## 리뷰 요구사항(optional)

> 리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요
>
> ex) 메서드 XXX의 이름을 더 잘 짓고 싶은데 혹시 좋은 명칭이 있을까요?

pull request 시 브랜치 사라지지않게 protection rule 적용
https://kotlinworld.com/292

Xcode 에서 풀리퀘스트 하고 머지 할때는... 깃헙가서 하자.
자동으로 메시지 적어주는데 굳이 적고있기 싫다

728x90