From b1b627770ec17bfea3671223031ddecc53ccbb44 Mon Sep 17 00:00:00 2001 From: MoonJaeGyeong Date: Tue, 1 Jul 2025 22:46:16 +0900 Subject: [PATCH] =?UTF-8?q?docs=20:=20README.md=20=EB=AC=B8=EC=84=9C=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | Bin 24 -> 25256 bytes docs/Branch strategy and pull-request.md | 213 +++++++++++++++++++++++ docs/Code Convention.md | 208 ++++++++++++++++++++++ 3 files changed, 421 insertions(+) create mode 100644 docs/Branch strategy and pull-request.md create mode 100644 docs/Code Convention.md diff --git a/README.md b/README.md index 601e9623c0d52d65144428df4e896e99a768ac90..fe32feb1cc25159cfdc84011000a05577f10564b 100644 GIT binary patch literal 25256 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 + +### `main 브랜치` + +- develop 브랜치에서 배포할 수 있을 정도로 구현된 것을 Merge를 하는 브랜치입니다. + +
+ +### `develop 브랜치` + +- 기능 개발과 버그 수정의 브랜치 Merge가 자주 일어나는 브랜치입니다. 한마디로 개발이 활발하게 일어나는 브랜치입니다. +- 되도록이면 개발을 할 때 develop 브랜치에서 새로운 브랜치를 생성합니다. + + +
+ +### `feat(Label)/#이슈번호` + + +- 본인이 이슈를 만들었던(기능) 것에 대한 기능을 개발하는 브랜치입니다. 기능이 완벽하게 구현이 되었다면 develop 브랜치에 Pull Request를 보낸 후에 Merge를 하면 됩니다. + + ex) feature/#1 + +
+ +## Flow + + + +## PR 규칙 + + + +--- + +## Commit Message + +**태그이름은 모두 소문자로 쓰고 아래 9개 중 하나로 쓰기** + +커밋은 최대한 + +| feat: #{$이슈번호} | 새로운 기능 추가한 경우 | +| --- | --- | +| fix: #{$이슈번호} | 오류를 해결한 경우 | +| design: #{$이슈번호} | CSS등 UI변경한 경우 | +| style: #{$이슈번호} | 코드 포맷 변경, 세미콜론 누락, 코드 수정이 없는 경우 | +| refactor: #{$이슈번호} | 코드의 리팩토링 | +| docs: #{$이슈번호} | 문서와 관련하여 수정한 경우 | +| test: #{$이슈번호} | test를 추가하거나 수정했을 경우 | +| chore: #{$이슈번호} | build와 관련된 부분, 패키지 매니저 설정 등. 초기 설정도 여기에 포함 | +| rename: #{$이슈번호} | 폴더 이름, 경로 변경한 경우 | +| merge: #{$이슈번호} | 충돌 해결시 작성하는 커밋 메시지 | +- ISSUE 템플릿 + - error + + ```markdown + --- + name: 오류 수정 + about: 오류 설명 및 수정 + title: "[fix]" + labels: "오류수정" + assignees: 'username' + + --- + + ## 🤔 오류 내용 + 에러로그 함께 입력 +
+ + ## ⚠ 에러 캡쳐 + +
+ ``` + + - feature + + ```markdown + ## ✨ 구현 할 기능 + - [ ] + - [ ] + - [ ] + +
+ + ### 📕 레퍼런스 + ``` + + - refactor + + ```markdown + --- + name: 리팩토링 + about: 클린코드, 디렉토리 구조 변경 + title: "[refactor]" + labels: "리팩토링" + assignees: 'username' + + --- + + ## ✨ 리팩토링 할 부분 + +
+ ``` + + - setting + + ```markdown + --- + name: 환경 설정 + about: 개발 환경 세팅 + title: "[chore]" + labels: "환경설정" + assignees: 'username' + + --- + + ## ✨ 세팅할 환경 + +
+ + ### 📕 레퍼런스 + ``` + +- PR 템플릿 + + ```markdown + ## 📢 기능 설명 + 필요시 실행결과 스크린샷 첨부 +
+ + ## 연결된 issue + 연결된 issue를 자동을 닫기 위해 아래 {이슈넘버}를 입력해주세요.
+ close #{이슈넘버} +
+ + ## ✅ 체크리스트 + - [ ] PR 제목 규칙 잘 지켰는가? + - [ ] 추가/수정사항을 설명하였는가? + - [ ] 이슈넘버를 적었는가? + ``` + + +--- + +## 주의 사항 + +**커밋은 나누어 진행하기** + +예를 들자면, + +`feat: 로그인 페이지 추가 && fix: 로그인 페이지 오류 수정` + +이렇듯 메세지에 다른 내용을 한번에 커밋할 수 있는데, 이는 롤백할 때나 커밋 히스토리 확인할 때 불편할 수 있기 때문에 아래 예시처럼 진행 + +ex) + +```bash +git add { 로그인 페이지 추가에 관한 파일 스테이징 } +git commit -m "feat: #{$이슈번호} 로그인 페이지 추가" +git add { 로그인 페이지 오류 수정에 관한 파일 스테이징 } +git commit -m "fix: #{$이슈번호} 로그인 페이지 오류 수정" +``` + +위 예시처럼 각각 스테이징 및 커밋 + +📕레퍼런스 + +--- + +[코드리뷰가 쏘아올린 작은공 | 우아한형제들 기술블로그](https://techblog.woowahan.com/2712/) + +[우린 Git-flow를 사용하고 있어요 | 우아한형제들 기술블로그](https://techblog.woowahan.com/2553/) \ No newline at end of file diff --git a/docs/Code Convention.md b/docs/Code Convention.md new file mode 100644 index 0000000..c67f213 --- /dev/null +++ b/docs/Code Convention.md @@ -0,0 +1,208 @@ +# `코드 컨벤션` + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file