๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿฑ Git

[Git] git commit message convention์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ

by sgaeng 2021. 8. 17.

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

 

ํ•˜์ง€๋งŒ ์ด๋ฒˆ ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋‹ค๊ฐ™์ด ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ถ„ํ• ํ•˜์—ฌ ์ง„ํ–‰ํ•˜๊ณ  pushํ•˜๊ฒŒ ๋˜๋‹ˆ๊นŒ, ์„œ๋กœ๊ฐ€ ์–ด๋–ค ๋ถ€๋ถ„์„ ์–ด๋–ค ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ–ˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋˜์—ˆ๋‹ค.

๋ฌผ๋ก  ๋ฐ์ผ๋ฆฌ ์Šคํฌ๋Ÿผ์„ ํ†ตํ•ด์„œ ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ์ž‘์—…์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ณต์œ ํ•˜๊ณ  ์žˆ์ง€๋งŒ, ๋” ๊ตฌ์ฒด์ ์œผ๋กœ github repo์—์„œ ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์–ด๋Š ๋ถ€๋ถ„์„ ์ง„ํ–‰ํ–ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ git commit message template์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

์ด๋ฒˆ ๊ธฐํšŒ์— ๊ถ๊ธˆํ–ˆ๋˜ ๋ถ€๋ถ„๋“ค, ๊ทธ๋ฆฌ๊ณ  ์„ค์ •/์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‚จ๊ฒจ๋‘๋ ค๊ณ  ํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๋‚˜์ค‘์— ๋ˆ„๊ตฐ๊ฐ€(๋ฏธ๋ž˜์˜ ๋‚˜ ํฌํ•จ)๊ฐ€ ๋ณด๊ณ  ํ•„์š”ํ•  ๋•Œ ๋น ๋ฅด๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ? ใ…Žใ…Žใ…Ž

 


 

1. Code Convention (= Code Style Guide) ์ด๋ž€?

์ฝ๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ๋žŒ๋“ค๋ผ๋ฆฌ ์ •ํ•ด๋†“์€ ์ฝ”๋”ฉ ์Šคํƒ€์ผ ๊ทœ์•ฝ(ํ•˜๋‚˜์˜ ์ž‘์„ฑ ํ‘œ์ค€)์ด๋‹ค.

์ฆ‰, ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋ดค์„ ๋•Œ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ€๋…์„ฑ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๊ธด ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ ์ด๋‹ค.

 

2. Git Commit Message Convention ์ด๋ž€?

git ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ์˜ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๊ฑฐ๋‚˜ ํ˜‘์—… ๊ด€๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” commit message ์ž‘์„ฑ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ทœ์น™์ด๋‹ค.

์ด๋Ÿฌํ•œ ์ปจ๋ฒค์…˜์„ ๋”ฐ๋ฅด๋ฉด

์ฝ”๋“œ ๋ณ€๊ฒฝ ์ดํ›„, ํƒ€์ธ์—๊ฒŒ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์„ค๋ช…ํ•  ๋•Œ ์šฉ์ดํ•˜๊ณ  (๋‚˜์ค‘๋˜๋ฉด ๋‚ด๊ฐ€ ๊ฐœ๋ฐœํ•œ ์ฝ”๋“œ์—ฌ๋„ ๋‹ค ๊นŒ๋จน์œผ๋‹ˆ๊นŒ,,)

์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ•˜๊ฑฐ๋‚˜ ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ, ๋ฒ„๊ทธ ๋ฐœ์ƒ์‹œ ๋ฌธ์ œ ์ถ”์ ์— ์šฉ์ดํ•˜๋‹ค.

์ฆ‰, ๋ฉ”์‹œ์ง€๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ์ฝ”๋“œ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ ์ด๋‹ค.

 

(1) Commit message์˜ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ

์ œ๋ชฉ(header), ๋ณธ๋ฌธ(body, optional), ๊ผฌ๋ฆฌ๋ง(footer, optional) 3๊ฐ€์ง€์˜ ํŒŒํŠธ๋กœ ๋‚˜๋‰œ๋‹ค. 

type : description

body 

footer
  • ์ œ๋ชฉ(header) : [type: description์˜ ํ˜•ํƒœ] ํ•ด๋‹น ์ปค๋ฐ‹์— ๋Œ€ํ•ด ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์„ค๋ช…ํ•œ๋‹ค. 50์ž ์ด๋‚ด๋กœ ์ž‘์„ฑํ•œ๋‹ค.
    • [์ฐธ๊ณ ] VSC editer๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์™ผ์ชฝ์˜ git source control์„ ์ด์šฉํ•ด์„œ commit message ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ์ž‘์„ฑ๋œ ๋ฉ”์‹œ์ง€๋Š” ์˜ค๋กœ์ง€ header๋กœ๋งŒ ์ธ์‹๋œ๋‹ค.

  • ๋ณธ๋ฌธ(body, optional) : ์ œ๋ชฉ ์ด์™ธ์— ์ถ”๊ฐ€ ์„ค๋ช…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ž‘์„ฑํ•œ๋‹ค(optional). ์ œ๋ชฉ๊ณผ ๋ณธ๋ฌธ์€ ๋นˆ ์ค„(##########)๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.
  • ๊ผฌ๋ฆฌ๋ง(footer, optional) : ์ปค๋ฐ‹๊ณผ ๊ด€๋ จ๋œ ์ด์Šˆ ๋ฒˆํ˜ธ, ์ฐธ๊ณ  ๋“ฑ๊ณผ ๊ฐ™์ด ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

(2) type (in header) ์˜ ์ข…๋ฅ˜

type์€ ์˜์–ด๋กœ ์“ด๋‹ค.

(์ฒซ ๋ฌธ์ž๋Š” ๋Œ€๋ฌธ์ž๋กœ ํ•˜๋Š”๊ฒŒ ์›์น™์ธ ๊ฒƒ ๊ฐ™์€๋ฐ, ์‚ฌ์‹ค ๋Œ€๋ถ€๋ถ„ ์†Œ๋ฌธ์ž๋กœ ์จ์„œ ๋Œ€/์†Œ๋ฌธ์ž๋Š” ์ƒ๊ด€ ์—†๋Š” ๋“ฏ)

 

1๏ธโƒฃ ์ฃผ๋กœ ์‚ฌ์šฉ ํƒ€์ž… ์ข…๋ฅ˜

Feat : ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
Fix : ๋ฒ„๊ทธ ์ˆ˜์ •
Docs : ๋ฌธ์„œ ์ˆ˜์ •
Style : ์ฝ”๋“œ ํฌ๋งท ๋ณ€๊ฒฝ, ์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ, ์ฝ”๋“œ ์ˆ˜์ •์ด ์—†๋Š” ๊ฒฝ์šฐ
Refactor : ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
Test : ํ…Œ์ŠคํŠธ ์ฝ”๋“œ, ๋ฆฌํŽ™ํ† ๋ง ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€
Chore : ๋นŒ๋“œ ์—…๋ฌด ์ˆ˜์ •, ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์ˆ˜์ •

 

2๏ธโƒฃ ๊ทธ ์™ธ ๊ธฐํƒ€ ํƒ€์ž… ์ข…๋ฅ˜

Design : UI ๋””์ž์ธ ๋ณ€๊ฒฝ
Rename : ํŒŒ์ผ/ํด๋” ์ด๋ฆ„ ์ˆ˜์ •
Remove : ์ฝ”๋“œ/ํŒŒ์ผ ์‚ญ์ œ

(3) description (in header) ์˜ ๊ทœ์น™

[์˜์–ด๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ]

1. 50์ž ์ดํ•˜, ๋Œ€๋ฌธ์ž ์ž‘์„ฑ, ๋งˆ์นจํ‘œ๋ฅผ ๋ถ™์ด์ง€ ์•Š๋Š”๋‹ค.

2. ๊ณผ๊ฑฐํ˜•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ๋ช…๋ น์กฐ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.

 

์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

# ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
feat(user-auth): implement user login functionality

# ๋ฒ„๊ทธ ์ˆ˜์ •
fix(order-processing): resolve issue with order calculation

# ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
refactor(api): optimize database query performance

# ํ…Œ์ŠคํŠธ ๋ณ€๊ฒฝ
test(login): add unit tests for user login functionality

[ํ•œ๊ธ€๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ]

1. 50์ž ์ดํ•˜, ๋งˆ์นจํ‘œ๋ฅผ ๋ถ™์ด์ง€ ์•Š๋Š”๋‹ค.

2. ๊ณผ๊ฑฐํ˜•(ex. '~ํ–ˆ์Šต๋‹ˆ๋‹ค.')์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  '๋™๋ช…์‚ฌ'๋กœ ๋๋‚ด๋„๋ก ํ•œ๋‹ค.

 

์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

# ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
feat(user-auth): ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„

# ๋ฒ„๊ทธ ์ˆ˜์ •
fix(order-processing): ์ฃผ๋ฌธ ๊ณ„์‚ฐ๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ ํ•ด๊ฒฐ

# ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
refactor(API): ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ์ตœ์ ํ™”

# ํ…Œ์ŠคํŠธ ๋ณ€๊ฒฝ
test(login): ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์œ ๋‹› ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€

(4) body ์˜ ๊ทœ์น™

1. ์„ ํƒ์‚ฌํ•ญ(optional)์ด๋‹ค. (๊ผญ ์ž‘์„ฑ ์•ˆํ•ด๋„ ๋œ๋‹ค.)

2. ๋ถ€์—ฐ์„ค๋ช…์ด ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ์ปค๋ฐ‹์˜ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•  ๊ฒฝ์šฐ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

3. 72์ž ์ด๋‚ด๋กœ ์ž‘์„ฑํ•œ๋‹ค.

3. ๋ณธ๋ฌธ ๋‚ด์šฉ์€ ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝํ–ˆ๋Š”์ง€ ๋ณด๋‹ค, "๋ฌด์—‡์„" ๋ณ€๊ฒฝํ–ˆ๋Š”์ง€ ๋˜๋Š” "์™œ" ๋ณ€๊ฒฝํ–ˆ๋Š”์ง€ ๋ฅผ ์„ค๋ช…ํ•œ๋‹ค. (์ตœ๋Œ€ํ•œ ์ƒ์„ธํžˆ ์ž‘์„ฑ)

4. ์ œ๋ชฉ๊ณผ ๊ตฌ๋ถ„๋˜๊ธฐ ์œ„ํ•ด ๊ณต๋ฐฑ ํ•œ ์ค„์„ ๋„์›Œ์„œ ์ž‘์„ฑํ•œ๋‹ค.

 

(5) footer ์˜ ๊ทœ์น™

1. ์„ ํƒ์‚ฌํ•ญ(optional)์ด๋‹ค. (๊ผญ ์ž‘์„ฑ ์•ˆํ•ด๋„ ๋œ๋‹ค.)

2. issue tracker id ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ "์œ ํ˜•: #์ด์Šˆ๋ฒˆํ˜ธ" ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

3. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ด์Šˆ ๋ฒˆํ˜ธ๋ฅผ ์ ์„ ๋•Œ๋Š” ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

 

[issue tracker ์œ ํ˜•์€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•œ๋‹ค.]

- Fixes: ์ด์Šˆ ์ˆ˜์ • ์ค‘ (์•„์ง ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ)

- Resolves: ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•œ ๊ฒฝ์šฐ

- Ref: ์ฐธ๊ณ ํ•  ์ด์Šˆ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ

- Related to: ํ•ด๋‹น ์ปค๋ฐ‹๊ณผ ๊ด€๋ จ๋œ ์ด์Šˆ๋ฒˆํ˜ธ (์•„์ง ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ)

โžก๏ธ ex) Fixes: #45 Related to: #34, #23

 

 

 

 

์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ Git commit message convention์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.๐Ÿงš

 

์ด์ œ ๋‹ค์Œ ํฌ์ŠคํŒ…(https://kkangsg.tistory.com/99)์—์„œ 

์œ„์˜ convention์„ ๋”ฐ๋ฅด๋Š” Git commit message template ์ „์ฒด๋ฅผ ์‚ดํŽด๋ณด๊ณ 

global๊ณผ local์— ์ ์šฉํ•ด์„œ ์•ž์œผ๋กœ ๋‚˜์˜ ํ”„๋กœ์ ํŠธ์— commit message template์„ ์ ์šฉํ•ด๋ณด์ž!๐Ÿ”ฅ

 

 


[์ฐธ๊ณ ]