commit convention - connect-foundation/2019-07 GitHub Wiki

commit convention

udacity์˜ convention์„ base๋กœ, ์„ธ๋ถ€์ ์ธ๊ฒƒ์€ ํ”„๋กœ์ ํŠธ์— ๋งž์ถ”์–ด ์ˆ˜์ •ํ•˜์˜€์Œ

๋ชจ๋“  ๊ทœ์น™์€ ์„œ๋กœ๋ฅผ ๋ฐฐ๋ คํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•œ๋‹ค!

์ฒ ํ•™

๋ชจ๋“  commit์€ ๋” ์ด์ƒ ์ชผ๊ฐค ์ˆ˜ ์—†๋Š” atomic ํ•œ ๋‹จ์œ„๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  1. ๋งŒ์•ฝ stage ์ƒํƒœ์˜ ํŒŒ์ผ๋“ค์ด ์„œ๋กœ ์—ฐ๊ด€๋˜์–ด ์žˆ์–ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ commit์œผ๋กœ ์ชผ๊ฐœ๊ธฐ ํž˜๋“  ๊ฒฝ์šฐ,
    roll back ํ›„ ๋‹ค์‹œ atomicํ•œ commit์„ ๋งŒ๋“ ๋‹ค.
  2. ํ•œ commit์— ๋ณ€๊ฒฝ๋˜๋Š” ํŒŒ์ผ์˜ ๊ฐฏ์ˆ˜๋Š” 10๊ฐœ๊ฐ€ ๋„˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์ง€ํ–ฅํ•œ๋‹ค.

๋‹ค๋งŒ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์˜ˆ์™ธ๋กœ ํ•œ๋‹ค.

์˜ˆ์‹œ)
ํ•จ์ˆ˜, class์˜ ๋ณ€๊ฒฝ์œผ๋กœ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๋‹ค๋ฅธ ํŒŒ์ผ๋“ค๋„ ์ˆ˜์ •๋˜๋Š” ๊ฒฝ์šฐ.
ํด๋”๋ช…์ด ๋ณ€๊ฒฝ๋˜์–ด ํ•œ๊บผ๋ฒˆ์— ํŒŒ์ผ์ด ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ์šฐ.
!HOTFIX์˜ ๊ฒฝ์šฐ.

๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ

๋ฉ”์‹œ์ง€๋Š” ํฌ๊ฒŒ 4๊ฐ€์ง€ ์˜์—ญ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

  1. ํƒ€์ž…
  2. ์ด์œ 
  3. ๋ณธ๋ฌธ
  4. ๊ผฌ๋ฆฌ๋ง
ํƒ€์ž…[์ ์šฉ ๋ฒ”์œ„]: ์ œ๋ชฉ (1์ค„)
\n
?: ์ด์œ  ์„ค๋ช… (1์ค„)
๋ณธ๋ฌธ(์„ ํƒ ์‚ฌํ•ญ)
\n
๊ผฌ๋ฆฌ๋ง(์„ ํƒ ์‚ฌํ•ญ)

ํ•œ ์ค„์˜ ๊ธธ์ด๋Š” 72์ž ์ด๋‚ด๋กœ ์ œํ•œํ•œ๋‹ค.

๋‚ด๋ถ€์— ์ด์œ  ๋“ฑ์„ list๋กœ ํ‘œํ˜„ํ•ด์•ผ ํ•  ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ํ•œ๋‹ค.

- ์š”์†Œ 1
- ์š”์†Œ 2

ํƒ€์ž…

ํƒ€์ž…์€ ํƒœ๊ทธ์™€ ์ œ๋ชฉ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ํƒœ๊ทธ๋Š” ์˜์–ด๋กœ ์“ฐ๋˜ ์ฒซ ๋ฌธ์ž๋Š” ๋Œ€๋ฌธ์ž๋กœ ํ•œ๋‹ค.

ํƒœ๊ทธ

ํƒœ๊ทธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ข…๋ฅ˜๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.

  1. ๊ธฐ๋Šฅ
  2. ๊ฐœ์„ 
  3. ๊ทธ ์™ธ

ํƒœ๊ทธ ๋’ค์—๋Š” ": "๋ฅผ ๋ถ™์—ฌ ์ œ๋ชฉ๊ณผ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

"ํƒœ๊ทธ: ์ œ๋ชฉ"์˜ ํ˜•ํƒœ์ด๋ฉฐ, : ๋’ค์—๋งŒ space๊ฐ€ ์žˆ์Œ์— ์œ ์˜ํ•œ๋‹ค.

ํƒœ๊ทธ ์ด๋ฆ„ ์„ค๋ช…
Feat ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ
Fix ๋ฒ„๊ทธ๋ฅผ ๊ณ ์นœ ๊ฒฝ์šฐ
Design CSS ๋“ฑ ์‚ฌ์šฉ์ž UI ๋””์ž์ธ ๋ณ€๊ฒฝ
!BREAKING CHANGE ์ปค๋‹ค๋ž€ API ๋ณ€๊ฒฝ์˜ ๊ฒฝ์šฐ
!HOTFIX ๊ธ‰ํ•˜๊ฒŒ ์น˜๋ช…์ ์ธ ๋ฒ„๊ทธ๋ฅผ ๊ณ ์ณ์•ผํ•˜๋Š” ๊ฒฝ์šฐ
Style ์ฝ”๋“œ ํฌ๋งท ๋ณ€๊ฒฝ, ์„ธ๋ฏธ ์ฝœ๋ก  ๋ˆ„๋ฝ, ์ฝ”๋“œ ์ˆ˜์ •์ด ์—†๋Š” ๊ฒฝ์šฐ
Refactor ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
Comment ํ•„์š”ํ•œ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ๋ณ€๊ฒฝ
Docs ๋ฌธ์„œ๋ฅผ ์ˆ˜์ •ํ•œ ๊ฒฝ์šฐ
Test ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€, ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง(ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ๋ณ€๊ฒฝ X)
Chore ๋นŒ๋“œ ํƒœ์Šคํฌ ์—…๋ฐ์ดํŠธ, ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ(ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ๋ณ€๊ฒฝ X)
Rename ํŒŒ์ผ ํ˜น์€ ํด๋”๋ช…์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒฝ์šฐ
Remove ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ
์ž์„ธํžˆ ๋ณด๊ธฐ

๊ธฐ๋Šฅ

  • Feat: ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ
  • Fix: ๋ฒ„๊ทธ๋ฅผ ๊ณ ์นœ ๊ฒฝ์šฐ
  • Design: CSS๋“ฑ ์‚ฌ์šฉ์ž UI ๋””์ž์ธ ๋ณ€๊ฒฝ
  • !BREAKING CHANGE : ์ปค๋‹ค๋ž€ API ๋ณ€๊ฒฝ์˜ ๊ฒฝ์šฐ
    • API์˜ arguments, return ๊ฐ’์˜ ๋ณ€๊ฒฝ
    • DB์˜ ํ…Œ์ด๋ธ” ๋ณ€๊ฒฝ
  • !HOTFIX: ๊ธ‰ํ•˜๊ฒŒ ์น˜๋ช…์ ์ธ ๋ฒ„๊ทธ๋ฅผ ๊ณ ์ณ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

์ถ”๊ฐ€์ ์ธ ๋ฌธ๋งฅ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ๊ด„ํ˜ธ ์•ˆ์— ์ ์„ ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ์‹œ)
"Feat(navigation):"
"Fix(database):"

BREAKING CHANGE๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ๊ผฌ๋ฆฟ๋ง Related์— ์—ฐ๊ด€ commit ๋ฒˆํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์ง€ํ–ฅํ•œ๋‹ค.

์ด ๋ณ€ํ™”๋กœ ์˜ํ–ฅ์„ ๋ฐ›๋Š” commit์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•จ

BREAKING CHANGE์ดํ›„ ๋ณ€๊ฒฝ๋œ API์— ๋งž์ถฐ ์ˆ˜์ •ํ•˜๋Š” ์ฝ”๋“œ์˜ commit์—๋Š” "Fix"๋ฅผ ๋ถ™์ธ๋‹ค.

๊ฐœ์„ 

  • Style: ์ฝ”๋“œ ํฌ๋งท ๋ณ€๊ฒฝ, ์„ธ๋ฏธ ์ฝœ๋ก  ๋ˆ„๋ฝ, ์ฝ”๋“œ ์ˆ˜์ •์ด ์—†๋Š” ๊ฒฝ์šฐ
  • Refactor: ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
    • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋‚˜ ๋ฒ„๊ทธ ์ˆ˜์ •์—†์ด ํ˜„์žฌ ๊ตฌํ˜„์„ ๊ฐœ์„ 
  • Comment: ํ•„์š”ํ•œ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ๋ณ€๊ฒฝ

Style์˜ ๊ฒฝ์šฐ ์˜คํƒ€ ์ˆ˜์ •, ํƒญ ์‚ฌ์ด์ฆˆ ๋ณ€๊ฒฝ, ๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ ๋“ฑ์— ํ•ด๋‹น๋œ๋‹ค.
Refactor์˜ ๊ฒฝ์šฐ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋ง ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น๋œ๋‹ค.

๊ทธ ์™ธ

  • Docs: ๋ฌธ์„œ๋ฅผ ์ˆ˜์ •ํ•œ ๊ฒฝ์šฐ
  • Test: ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€, ํ…Œ์ŠคํŠธ ๋ฆฌํŒฉํ† ๋ง (ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์Œ)
  • Chore: ๋นŒ๋“œ ํƒœ์Šคํฌ ์—…๋ฐ์ดํŠธ, ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์„ค์ •ํ•  ๊ฒฝ์šฐ (ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์Œ)
  • Rename: ํŒŒ์ผ ํ˜น์€ ํด๋”๋ช…์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒฝ์šฐ
  • Remove: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ ํ˜น์€ ํด๋”๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ.

Docs์˜ ๊ฒฝ์šฐ README.md ์ˆ˜์ • ๋“ฑ์— ํ•ด๋‹น๋œ๋‹ค.
Test๋Š” test ํด๋” ๋‚ด๋ถ€์˜ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚œ ๊ฒฝ์šฐ์—๋งŒ ํ•ด๋‹นํ•œ๋‹ค.
Chore์˜ ๊ฒฝ์šฐ package.json์˜ ๋ณ€๊ฒฝ์ด๋‚˜ dotenv์˜ ์š”์†Œ ๋ณ€๊ฒฝ ๋“ฑ, ๋ชจ๋“ˆ์˜ ๋ณ€๊ฒฝ์— ํ•ด๋‹น๋œ๋‹ค.

์ œ๋ชฉ

์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์งง์€ ์š”์•ฝ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

  • ์ œ๋ชฉ์˜ ์ฒ˜์Œ์€ ๋™์‚ฌ ์›ํ˜•์œผ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
  • ์ด ๊ธ€์ž ์ˆ˜๋Š” 50์ž ์ด๋‚ด๋กœ. (์ด์ „ ๋ชจ๋‹ˆํ„ฐ ์ตœ๋Œ€ ์ถœ๋ ฅ ํฌ๊ธฐ์ธ๋“ฏ)
  • ๋งˆ์ง€๋ง‰์— ๋งˆ์นจํ‘œ(.)๋ฅผ ๋ถ™์ด์ง€ ์•Š๋Š”๋‹ค.

์˜์–ด์˜ ๊ฒฝ์šฐ ๋‹ค์Œ์˜ ๊ทœ์น™์„ ๋”ฐ๋ฅธ๋‹ค.

  • ์˜์–ด๋กœ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ ์ฒซ ๊ธ€์ž๋Š” ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑํ•œ๋‹ค.
  • "Fix", "Add", "Change"์˜ ๋ช…๋ น์–ด๋กœ ์‹œ์ž‘ํ•œ๋‹ค.

ํ•œ๊ธ€์˜ ๊ฒฝ์šฐ ๋‹ค์Œ์˜ ๊ทœ์น™์„ ๋”ฐ๋ฅธ๋‹ค.

  • "๊ณ ์นจ", "์ถ”๊ฐ€", "๋ณ€๊ฒฝ"์˜ ๋ช…๋ น์–ด๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
์˜ˆ์‹œ)
"์ˆ˜์ • ๋ณ€์ˆ˜๋ช…"
"Fix typo"
"์ถ”๊ฐ€ get data api ํ•จ์ˆ˜"

why

์ด๋ฒˆ commit์˜ ๋ชฉ์ ๊ณผ, ์–ด๋–ค ์ ์ด ๋‹ฌ๋ผ์กŒ๋Š”์ง€๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ถ€๋ถ„.

  1. ํƒœ๊ทธ๋กœ ?: ๋ฅผ ๋ถ™์ธ๋‹ค.
  2. 1์ค„๋กœ ์š”์•ฝํ•ด์„œ ๊ธฐ์ˆ ํ•œ๋‹ค.
  3. ์ž์„ธํ•œ ๋‚ด์šฉ์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ ๋ณธ๋ฌธ์— ๊ฐœ์‹œํ•œ๋‹ค.
์˜ˆ์‹œ)
"?: ๋ฐฐ์—ด์—์„œ ๋ชจ๋“  ์š”์†Œ๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ reduce๋กœ ๊ตฌํ˜„."

๋ณธ๋ฌธ

์ปค๋ฐ‹์˜ ์ƒ์„ธ ๋‚ด์šฉ

  • ๋ณธ๋ฌธ์€ ํ•œ ์ค„์— 72์ž ์ด๋‚ด๋กœ ์ž‘์„ฑํ•œ๋‹ค.
  • ํ•œ ์ค„์„ ๋„์›Œ ๋ฌธ๋‹จ์œผ๋กœ ๋‚˜๋ˆ„๊ฑฐ๋‚˜ ๋ถˆ๋ฆฟ(Bullet, โ€ข)์„ ์‚ฌ์šฉํ•ด ๋‚ด์šฉ์„ ๊ตฌ๋ถ„ํ•œ๋‹ค.
    • ๋ฌธ๋‹จ์„ ๋‚˜๋ˆŒ ์‹œ ๊ฐœํ–‰(\n)์œผ๋กœ ๋นˆ ์ค„์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
  • ๊ธด ์ปค๋ฐ‹ ๋ณธ๋ฌธ์€ ์งง์€ ์„ค๋ช… ๋‹ค์Œ์— ์œ„์น˜ํ•œ๋‹ค.

๊ผฌ๋ฆฌ๋ง

๊ผฌ๋ฆฌ๋ง์€ ์ปค๋ฐ‹์— ๋Œ€ํ•œ ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ๋‹ค.

  • ๊ด€๋ จ ์žˆ๋Š” PR, ๋ฆฌ๋ทฐ์–ด, BREAKING CHANGES, ์ด์Šˆ ํŠธ๋ž˜์ปค ID
  • ํ•œ ์ค„์— ํ•˜๋‚˜์˜ ๋ฉ”ํƒ€ ์ •๋ณด.

github ์ด์Šˆ ์—ฐ๋™

์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋กœ Github ์ด์Šˆ(issue)๋ฅผ ์ž๋™ ์ข…๋ฃŒ์‹œํ‚ฌ ๊ฒฝ์šฐ ๊ผฌ๋ฆฌ๋ง์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„œ์ˆ ํ•œ๋‹ค.

ํ‚ค์›Œ๋“œ #์ด์Šˆ๋ฒˆํ˜ธ
ํ‚ค์›Œ๋“œ ์ข…๋ฅ˜
  1. close
  2. closes
  3. closed
  4. fix
  5. fixes
  6. fixed
  7. resolve
  8. resolves
  9. resolved

close ๊ณ„์—ด : ์ผ๋ฐ˜ ๊ฐœ๋ฐœ ์ด์Šˆ
fix ๊ณ„์—ด : ๋ฒ„๊ทธ ํ”ฝ์Šค, ํ•ซ ํ”ฝ์Šค ์ด์Šˆ
resolve ๊ณ„์—ด : ๋ฌธ์˜๋‚˜ ์š”์ฒญ ์‚ฌํ•ญ์— ๋Œ€์‘ํ•œ ์ด์Šˆ

ํ˜„์žฌ ์ปค๋ฐ‹๊ณผ ๊ด€๋ จ๋œ commit ๊ธฐ์ˆ 

ํ˜„์žฌ commit๊ณผ ์—ฐ๊ด€๋œ commit์„ ๋‚˜ํƒ€๋‚ด๊ณ ์ž ํ•  ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ๊ธฐํ•œ๋‹ค.

Related: commit๋ฒˆํ˜ธ, commit๋ฒˆํ˜ธ

์ฐธ๊ณ ) commit ์‹œ๋‚˜๋ฆฌ์˜ค

commitlint

๋งํฌ

commitlint๋ฅผ ์ ์šฉํ•ด ํƒ€์ž…์„ ์ž‘์„ฑํ•  ์‹œ ํ•ด๋‹น ๊ทœ์น™์„ ์ง€ํ‚ค๋„๋ก ๋…ธ๋ ฅํ•œ๋‹ค.

  1. "ํƒ€์ž…: ์ œ๋ชฉ"์„ lint๋กœ ๊ฒ€์‚ฌํ•œ๋‹ค.
  2. ํ†ต๊ณผํ•  ๊ฒฝ์šฐ git commit์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

commit๋ฉ”์‹œ์ง€ ์ž‘์„ฑ ํˆด

commit -m ์œผ๋กœ commitํ•˜์ง€ ์•Š๋Š”๋‹ค.

  1. 72์ž ์ œํ•œ์„ ์ง€ํ‚ค๊ธฐ ์–ด๋ ค์›Œ์ง„๋‹ค.
  2. commit์ด ๊ธธ์–ด์งˆ ์‹œ, ์ด์ „ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง„๋‹ค.

commit ์ž‘์„ฑ tool์€ ์ดํ•˜์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์ด์šฉํ•œ๋‹ค.

  • notepad++ (windows)
    • ์—ด ํ‘œ์‹์œผ๋กœ 72์ž ์ œํ•œ์„ ํ•œ๋‹ค.
  • vim

git lg ๋ช…๋ น์œผ๋กœ commit log ํ™•์ธ

git log๋ณด๋‹ค๋Š” ์•„๋ž˜์˜ ์ปค์Šคํ…€ ๋ช…๋ น์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์ง€ํ–ฅํ•œ๋‹ค.

git config --global alias.lg "log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold red)%h%C(reset) : %C(bold green)(%ar)%C(reset) - %C(cyan)<%an>%C(reset)%C(bold yellow)%d%C(reset)%n%n%w(90,1,2)%C(white)%B%C(reset)%n'"

๋‹ค์Œ ๋ช…๋ น์„ ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ, "git lg"๋ฅผ ํ†ตํ•ด log๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

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