프로그래밍/Git, Github
[Github] commit message & Issue 활용
blueprint-12
2023. 1. 11. 22:21
브랜치 종류
- main(구: master) : 프로젝트 최종 배포 중심 브랜치
- develop: 개발이 진행되는 브랜치, 배포할 수준의 기능을 갖추면 relese 브랜치로 머지
- feature: 기능을 개발하는 브랜치, develop 브랜치에서 파생되는 브랜치며 develop 브랜치로 머지
- release: 개발된 내용을 배포하기 위해 준비하는 브랜치, 충분한 테스트를 통해 버그를 검사하고 배포할 준비가되었다고 판단하면 main으로 머지하여 배포한다. 버그 수정 내용을 develop 브랜치에도 반영하고, 최종적으로 main에 머지
- hotfix: 출시 버전(main)에서 버그를 수정하는 브랜치, main브랜치에서 생성되며, 수정이 완료되면 dev, main 브랜치에 수정 사항을 반영
브랜치 네이밍
- feature: feature/{기능 요약} or feature/{issue-number}-{기능 요약}
- release: release-{버전} or release/{버전}
- hotfix: hotfix-{버전}
과정
- main 브랜치에서 개발 시작
- 기능 구현 및 버그가 발생하면 issue를 작성한다.
- dev 브랜치로부터 feature 브랜치를 파생하고, feature 브랜치에서 기능구현
- PR 후, feature 브랜치에서 dev 브랜치로 merge
- 개발이 끝나면, dev 브랜치로부터 release 브랜치를 생성해 최종 테스트 진행
- 테스트 성공 -> release 브랜치에서 main으로 머지
- main 브랜치에서 버전 태그를 추가하여 배포
- main 브랜치에서 버그가 발생하면 hotfix 브랜치에서 버그를 수정한다. 버그 수정이 끝나면 dev, main 브랜치에 merge 하고 main 브랜치에서는 버전을 추가하여 배포
commit message
구조
<type>(<scope>): <subject> # 헤더
<BLANK LINE>
<body> # 본문
<BLANK LINE>
<footer> # 바닥글
- <type>: 해당 commit 의 성격을 나타낸다. 아래 중 하나
- <body>: 헤더에서 생략한 상세 내용작성
- <footer>: 어떤 이슈에서 왔는지와 같은 참조 정보를 추가하는 용도 e.g.) 특정 이슈를 참조하려면 cloase #{이슈번호}와 같이 추가하면 된다.
- 어떻게 보다는 무엇과 왜를 설명하는 내용쓰기
Commit Type
- feat - 새로운 기능에 대한 커밋
- fix - 버그 수정
- test - 테스트 코드, 리팩토링 테스트 코드 추가
- refactor - 코드 리팩토링
- chore - 빌드 업무 수정, 패키지 매니저 수정
- style- 코드 포맷팅, 세미클론 누란, 코드 변경이 없는 경우 (코드 의미에 영향을 주지않는 변경사항)
git add . #변경 사항 전체를 stage 상태로 전환
git commit -m "커밋 제목
#커밋 제목 밑에 추가 부연설명을 달기 위해서는, 제목에 "엔터(줄바꿈) 2번" 한 후에 설명을 적으면 된다.
부가 설명"
git push origin main #원격저장소에 커밋 보내기
+
git commit -am "커밋 메세지" #add와 commit 동시 실행
git diff #commit간 차이 확인
git log #커밋 목록 확인, 시간 순으로 최신 commit 기록부터 내림차순으로 나열 HEAD가 가리키는 커밋이 가장 최신 커밋
git log 파일이름 #특정 파일 로그 확인
#amend는 개인이 작업할 때만 사용해야 한다.
git commit --amend #가장 최근 커밋을 수정하는 편리한 방법
git commit --amend -m "바뀔 커밋 메세지" #-m 옵션을 추가하면 편집기를 열지않아도 명령줄에 새 메세지를 전달할 수 있다.
#브랜치 & 깃 상태 확인
git branch #전체 브랜치 목록
git status # 현재 브랜치 위치 확인 및 commit 상태 확인
# 변경 사항이 있을 경우 or 브랜치를 파생할 때
git pull origin {현재 브랜치}
- 내가 어떤 브랜치에 있는 지 알고 싶다면 git status
- 상세한 커밋 목록을 확인하고 싶다면 git log
Issue
키워드를 사용해 PR을 이슈에 연결하기
Linked pull request을 통해 수동으로 작업하는 것 말고도,
PR 혹은 commit message에서 키워드를 사용해 이슈에 연결가능
키워드 목록
- close
- closes
- closed
- fix
- fixes
- fixed
- resolve
- resolves
- resolved
{키워드} #{이슈 넘버}
🤯기본 브랜치(repository's default branch)에 merge될 경우 참조된 이슈가 자동으로 close된다.
dev & feature 브랜치 생성
git branch develop # develop 브랜치 생성
git checkout develop # develop 브랜치로 전환
git pull origin main # 현재 브랜치(develop)로 리모트 레포지토리의 main(상위) 브랜치 가져오기
git push origin develop # 새롭게 만든 브랜치를 리모트 레포지토리로 push