Git Branch & Commit Message Convention - nhnacademy-be10-WannaB/wannab-wiki GitHub Wiki

Branch conventions

{type}/{issue-number}/{short-description}

ex) (๋„์–ด์“ฐ๊ธฐ X, - ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.) feature/issue-123/login-api bugfix/issue-198/fix-navbar hotfix/issue-1201/critical-error refactor/issue-1305/optimize-query test/issue-1401/unit-test-taskservice chore/issue-1600/update-dependencies

์ฃผ์š” ๋ธŒ๋žœ์น˜ ํƒ€์ž… ๋ถ„๋ฅ˜

ํƒ€์ž… ์˜๋ฏธ ์˜ˆ์‹œ
feature/ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ feature/issue-123/login-api
bugfix/ ์ผ๋ฐ˜์ ์ธ ๋ฒ„๊ทธ ์ˆ˜์ • bugfix/issue-198/fix-navbar
hotfix/ ๋ฐฐํฌ ์ดํ›„ ๊ธด๊ธ‰ ์ˆ˜์ • hotfix/issue-1201/critical-error
refactor/ ๋ฆฌํŒฉํ† ๋ง (๊ธฐ๋Šฅ ๋ณ€ํ™” ์—†์Œ) refactor/issue-1305/optimize-query
test/ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ/์ˆ˜์ • test/issue-1401/unit-test-taskservice
docs/ ๋ฌธ์„œ ์ž‘์—… docs/issue-1501/readme-update
chore/ ์„ค์ •, ๋นŒ๋“œ, ํŒจํ‚ค์ง€ ๋“ฑ chore/issue-1600/update-dependencies

๋„ค์ด๋ฐ ํŒ

ํ•ญ๋ชฉ ๊ถŒ์žฅ
๊ตฌ๋ถ„์ž / ์‚ฌ์šฉ (type/description)
์†Œ๋ฌธ์ž ์‚ฌ์šฉ ๋Œ€์†Œ๋ฌธ์ž ํ˜ผ์šฉ ์ง€์–‘
๊ณต๋ฐฑ ๋Œ€์‹  - login-api, fix-header
๊ธธ์ด๋Š” ์งง๊ฒŒ ๋„ˆ๋ฌด ๊ธธ๋ฉด ๊ฐ€๋…์„ฑโ†“
ํŒ€ ๋‚ด ์ผ๊ด€์„ฑ ์œ ์ง€ ๊ทœ์น™ ์ •ํ•˜๊ณ  ๋ฌธ์„œํ™” ํ•„์ˆ˜

๊ฐ€์ด๋“œ๋ผ์ธ

0. ์‹œ์ž‘

์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ๋‚ด์šฉ์„ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค

  • ๋กœ์ปฌ ์ €์žฅ์†Œ๊ฐ€ ์—†์„ ์‹œ : ์ €์žฅ์†Œ์˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์•ˆ HTTPS URL ์ด์šฉ
image - ๋กœ์ปฌ ์ €์žฅ์†Œ๊ฐ€ ์ด๋ฏธ ์žˆ์„ ์‹œ : `git pull origin master`

develop ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ํ›„ pull

$ git checkout -b develop
$ git pull origin develop

ull origin develop1. ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ

๋กœ์ปฌ ์ €์žฅ์†Œ์—์„œ ์ž‘์—…ํ•  ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑ ํ›„ ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•œ๋‹ค.

# ๋กœ์ปฌ ์ €์žฅ์†Œ branch ํ˜ธ์ถœ (์ดˆ๊ธฐ์—๋Š” master, develop ํ•„์š”)
$ git branch

# ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ๋ช…๋ น์–ด
$ git branch ๋ธŒ๋žœ์น˜์ด๋ฆ„
$ git checkout ๋ธŒ๋žœ์น˜ ์ด๋ฆ„
# ์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ํ•œ๋ฒˆ์— ์น˜๊ณ  ์‹ถ์œผ๋ฉด :git checkout -b feature/issue-123/login-api
# ๋ธŒ๋žœ์น˜ ๋„ค์ด๋ฐ ๊ทœ์น™์€ ์ƒ๋‹จ ๋‚ด์šฉ ์ฐธ๊ณ  ex) f{type}/{issue-number}-{short-description}

2. ์ž‘์—… ์ง„ํ–‰

  • ์ฝ”๋“œ ์ž‘์„ฑ

3. ์ˆ˜ํ–‰ ์ž‘์—… ์ปค๋ฐ‹

# status๋Š” ๋‹จ์ˆœํžˆ git ๋‚ด์šฉ ํ™•์ธ
$ git status 

$ git add .

# ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ž‘์„ฑ
# (Closes #์ด์Šˆ๋ฒˆํ˜ธ)๋ฅผ ํฌํ•จํ•˜๋ฉด PR ๋จธ์ง€ ์‹œ ์ด์Šˆ ์ž๋™ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
$ git commit -m "feat: login ํŽ˜์ด์ง€ ๊ตฌํ˜„  (Closes #123)"

# ์ž‘์—… branch ์˜ˆ์‹œ : feature/issue-123/login-api
# ์›๊ฒฉ ์ €์žฅ์†Œ branch ์ƒ์„ฑ ํ›„
$ git push origin {์ž‘์—… branch}

4. ์ˆ˜ํ–‰ ์ž‘์—…์„ ๋ฏธ์™„์„ฑ ์ƒํƒœ๋กœ ์ปค๋ฐ‹

  • ๊ธฐ๋Šฅ์ด ๋„ˆ๋ฌด ์ปค์„œ ํ•œ ๋ฒˆ์— ๊ฐœ๋ฐœํ•˜๊ธฐ ์–ด๋ ต๊ฑฐ๋‚˜, ๊ฐœ๋ฐœ ์ปดํ“จํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ๊ฒฝ์šฐ
# WIP(Work In Progress)๋ฅผ commit message์— ์ถ”๊ฐ€
git commit -m "feat: WIP - Implement login validation (missing password hashing)"

5. develop ๋ธŒ๋žœ์น˜์— merge ์ž‘์—…

  • Github์—์„œ๋Š” pull request ํ‘œํ˜„ ์‚ฌ์šฉ

6. ๋กœ์ปฌ ์ €์žฅ์†Œ ๋‚ด์šฉ ์ตœ์‹ ํ™”

# ๋ฐ˜๋“œ์‹œ develop๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ ์ƒ๊ฒจ์š”!!
$ git checkout develop
$ git status

$ git pull origin develop

7. ์‚ฌ์šฉํ•œ ๊นƒ ๋ธŒ๋žœ์น˜ ์‚ญ์ œ

  • ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ์•ˆ์“ฐ๋Š” ๋ธŒ๋žœ์น˜๋Š” ์‚ญ์ œํ•ฉ์‹œ๋‹ค. (master, develop) ์ œ์™ธ
  • ๋ช…๋ น์–ด
# ๋กœ์ปฌ ๊นƒ ๋ธŒ๋žœ์น˜ ํ™•์ธ
$ git branch

$ git branch -d feature/issue-123/login-api

8. 1~7 ์ง„ํ–‰ ์ƒํ™ฉ ๋ฐ˜๋ณต

  • ๊ณผ์ •์ค‘์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ ์€ ๋ฐ˜๋“œ์‹œ!! ๊ณต์œ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ ๋ชจ๋‘ ์ดˆ๋ณด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ ์ƒํ™ฉ์„ ํ•ญ์ƒ ๋Œ€๋น„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ๋Š” ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ ์ƒํ™ฉ ๋ฐ ์ง„ํ–‰ ์ƒํ™ฉ ๋”ฐ๋กœ ์ €์žฅํ•ด๋‚˜๊ฐ€๋ฉด์„œ ํ•˜๋Š” ๊ฒƒ๋„ ์ถ”์ฒœ๋“œ๋ ค์š”.

์ถฉ๋Œ ์‹œ

๊ฐ€๋ฒผ์šด ์ถฉ๋Œ ๋ฐœ์ƒ ์‹œ

  • Github์—์„œ Pull Request ๋ฅผ ํ†ตํ•ด ๋จธ์ง€ ํ•ฉ์น˜๊ธฐ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋•Œ ๊ฐ€๋Šฅํ•œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ํ•จ๊ป˜ ์ง„ํ–‰ํ•˜๊ณ , Reviewer๋ฅผ ๋‚จ๊ฒจ์ฃผ์„ธ์š”!

์ถฉ๋Œ์ด ํฌ๊ฒŒ ๋‚œ ๊ฒฝ์šฐ

  • GitHub PR ์—†์ด ์ง์ ‘ ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ, ์•„๋ž˜ ๊ฐ€์ด๋“œ๋ฅผ ํ•œ ์ค„์”ฉ ์ฐจ๊ทผ์ฐจ๊ทผ ๋”ฐ๋ผ ์ฃผ์„ธ์š”.
# 1. ํ˜„์žฌ develop ๊ธฐ์ค€์œผ๋กœ ์‹œ์ž‘
git checkout develop
git fetch origin

2. ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ PR ๋ธŒ๋žœ์น˜ ์ฒดํฌ์•„์›ƒ

git checkout -b your-feature-branch origin/your-feature-branch

3. ์ตœ์‹  develop ๋ธŒ๋žœ์น˜ ๋‚ด์šฉ ๋ณ‘ํ•ฉ

git pull origin develop

4. IDE์—์„œ ์ถฉ๋Œ๋œ ํŒŒ์ผ ์ˆ˜์ •

VSCode, IntelliJ ๋“ฑ์—์„œ ์ถฉ๋Œ๋œ ํŒŒ์ผ ์ˆ˜์ •

<<<<<<<, =======, >>>>>>> ๊ตฌ๊ฐ„ ์ •๋ฆฌ

5. ํ•ด๊ฒฐ ํ›„ ์ƒํƒœ ํ™•์ธ

git status # ์ˆ˜์ •๋œ ํŒŒ์ผ ๋ชฉ๋ก ํ™•์ธ git add . # ์ถฉ๋Œ ํ•ด๊ฒฐํ•œ ํŒŒ์ผ ์Šคํ…Œ์ด์ง• git commit -m "resolve merge conflict with develop" git push origin your-feature-branch

  • GitHub์— ๋‹ค์‹œ ๋“ค์–ด๊ฐ€๋ฉด PR์˜ ์ถฉ๋Œ ์ƒํƒœ๊ฐ€ ํ•ด๊ฒฐ๋œ ๊ฑธ๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค.
  • ์ดํ›„ ํ‰์†Œ๋Œ€๋กœ PR ๋ฆฌ๋ทฐ ๋ฐ ๋จธ์ง€ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ปค๋ฐ‹ ์ปจ๋ฒค์…˜

๊ธฐ๋ณธ ๊ตฌ์กฐ

์ œ๋ชฉ (Type: Subject)

์ œ๋ชฉ ์ž‘์„ฑ ์š”๋ น

์ปค๋ฐ‹ ์œ ํ˜• ์˜๋ฏธ
feat ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
design CSS ๋“ฑ ์‚ฌ์šฉ์ž UI ๋””์ž์ธ ๋ณ€๊ฒฝ
docs ๋ฌธ์„œ ์ˆ˜์ •
style ์ฝ”๋“œ formatting, ์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ, ์ฝ”๋“œ ์ž์ฒด์˜ ๋ณ€๊ฒฝ์ด ์—†๋Š” ๊ฒฝ์šฐ
!BREAKING CHANGE ์ปค๋‹ค๋ž€ API ๋ณ€๊ฒฝ์˜ ๊ฒฝ์šฐ
comment ํ•„์š”ํ•œ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ๋ณ€๊ฒฝ
rename ํŒŒ์ผ ๋˜๋Š” ํด๋” ๋ช…์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…๋งŒ์ธ ๊ฒฝ์šฐ
refactor ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
remove ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋Š” ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•œ ๊ฒฝ์šฐ
test ํ…Œ์ŠคํŠธ ์ฝ”๋“œ, ๋ฆฌํŒฉํ† ๋ง ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€
chore ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์ˆ˜์ •, ๊ทธ ์™ธ ๊ธฐํƒ€ ์ˆ˜์ • ex) .gitignore
!HOTFIX ๊ธ‰ํ•˜๊ฒŒ ์น˜๋ช…์ ์ธ ๋ฒ„๊ทธ๋ฅผ ๊ณ ์ณ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
fix ๋ฒ„๊ทธ ์ˆ˜์ •
  • ์ œ๋ชฉ์€ 50๊ธ€์ž ์ด๋‚ด๋กœ ์ž‘์„ฑํ•œ๋‹ค.
  • ์†Œ๋ฌธ์ž๋กœ ์ž‘์„ฑํ•œ๋‹ค.
  • ๋งˆ์นจํ‘œ ๋ฐ ํŠน์ˆ˜๊ธฐํ˜ธ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์˜๋ฌธ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ๋™์‚ฌ(์›ํ˜•)์„ ๊ฐ€์žฅ ์•ž์— ๋ช…๋ น์–ด๋กœ ์ž‘์„ฑํ•œ๋‹ค.
  • ๊ณผ๊ฑฐ์‹œ์ œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๊ฐ„๊ฒฐํ•˜๊ณ  ์š”์ ์ ์œผ๋กœ ์ฆ‰, ๊ฐœ์กฐ์‹ ๊ตฌ๋ฌธ์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค.
  • ex)

Pull Requst ์ž‘์„ฑ ์š”๋ น

image ์ œ๋ชฉ : <์ด์Šˆ๋ฒˆํ˜ธ/์ด์Šˆ์ด๋ฆ„ : ํ•œ์ผ> ์„ ๋ณต์‚ฌํ›„์— ์ œ๋ชฉ์— ๋ถ™์—ฌ๋†“๊ณ  ์ด์Šˆ๋ฒˆํ˜ธ์™€ ์ œ๋ชฉ๊ณผ ํ•œ์ผ์„ ์ž‘์„ฑ

์–ด๋–ค๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ๋Š”์ง€ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…

์ž‘์—… ์ƒ์„ธ๋‚ด์šฉ ์— ์–ด๋–ค ์ž‘์—…์„ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ์ ์€ํ›„ ๋ฆฌ๋ทฐ์–ด๋ฅผ ์ง€์ •ํ›„์— Pull Request ๋‚ ๋ฆฌ๊ธฐ

โš™

๋ฆฌ๋ทฐ์–ด๋Š” ์ž๊ธฐ ์ž๋ฆฌ๊ธฐ์ค€ ์–‘์˜†์˜ ์‚ฌ๋žŒ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.


์ฐธ๊ณ ์‚ฌํ•ญ

๊นƒ ๋ธŒ๋žœ์น˜ ๋งŒ๋“œ๋Š” ๋ช…๋ น์–ด

git checkout -b {๋ธŒ๋žœ์น˜ ๋ช…}

{๋ธŒ๋žœ์น˜ ๋ช…}์„ ๋งŒ๋“ค๊ณ  ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•œ๋‹ค.

๋ธŒ๋žœ์น˜๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ์ž˜ ์ด๋™ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ช…๋ น์–ด

git add .

git commit -m "์ปจ๋ฒค์…˜์— ๋งž๋Š” ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€"

git push origin {๋ธŒ๋žœ์น˜ ๋ช…}

๋กœ์ปฌ, ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜๋Š” ์ž๋™์œผ๋กœ ๋™๊ธฐํ™”๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์›๊ฒฉ ์ €์žฅ์†Œ์— ์žˆ๋Š” ๋ธŒ๋žœ์น˜์—์„œ ์ž๋ฃŒ๋ฅผ ๋‚ด๋ ค๋ฐ›๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ

  • master ๋ธŒ๋žœ์น˜์—์„œ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•ด์•ผํ•œ๋‹ค.
  • git checkout -b {๋ธŒ๋žœ์น˜ ๋ช…} ์œผ๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค๊ณ  ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ธŒ๋žœ์น˜ ๋ช…์„ ์ž˜ ํ™•์ธํ•˜์„ธ์š”.

์ด๋™ ํ›„ git pull origin {๋ธŒ๋žœ์น˜ ๋ช…} ์œผ๋กœ ํ•ด๋‹น ๋ธŒ๋žœ์น˜์˜ ์ž๋ฃŒ๋ฅผ ๋‚ด๋ ค๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ