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

[Git] git commit message template ์ ์šฉํ•˜๊ธฐ

by sgaeng 2021. 9. 12.

์ด์ „ ํฌ์ŠคํŒ…(https://kkangsg.tistory.com/95)์—์„œ commit message convention์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.

 

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š”

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

global๊ณผ local์— ์ ์šฉํ•ด์„œ ์•ž์œผ๋กœ ๋‚˜์˜ ํ”„๋กœ์ ํŠธ์— commit message template์„ ์ ์šฉํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค.๐Ÿงš

 


1. commit message template ์†Œ๊ฐœ

๋‚˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. Gitmoji๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ฐธ๊ณ ํ•ด์•ผํ•  ๋ถ€๋ถ„๋“ค์„ ์ถ”๊ฐ€๋กœ ์ ์–ด์ฃผ์—ˆ๋‹ค.

(ํ…œํ”Œ๋ฆฟ์˜ ๋‚ด์šฉ์ด ์™œ ์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑ๋˜์—ˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์ด์ „ ํฌ์ŠคํŒ…(convention)์— ๋Œ€ํ•ด ์ฐธ๊ณ ํ•˜๋ฉด ๋œ๋‹ค)

 

################
# <ํƒ€์ž…> : <์ œ๋ชฉ> ์˜ ํ˜•์‹์œผ๋กœ ์ œ๋ชฉ์„ ์•„๋ž˜ ๊ณต๋ฐฑ์ค„์— ์ž‘์„ฑ
# ์ œ๋ชฉ์€ 50์ž ์ด๋‚ด / ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด "๋ฌด์—‡"์ธ์ง€ ๋ช…ํ™•ํžˆ ์ž‘์„ฑ / ๋์— ๋งˆ์นจํ‘œ ๊ธˆ์ง€
# ์˜ˆ) :sparkles:Feat : ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ # ์ด์Šˆ๋ฒˆํ˜ธ

# ๋ฐ”๋กœ ์•„๋ž˜ ๊ณต๋ฐฑ์€ ์ง€์šฐ์ง€ ๋งˆ์„ธ์š” (์ œ๋ชฉ๊ณผ ๋ณธ๋ฌธ์˜ ๋ถ„๋ฆฌ๋ฅผ ์œ„ํ•จ)

################
# ๋ณธ๋ฌธ(๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ)์„ ์•„๋žซ์ค„์— ์ž‘์„ฑ
# ์—ฌ๋Ÿฌ ์ค„์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ•  ๋• "-"๋กœ ๊ตฌ๋ถ„ (ํ•œ ์ค„์€ 72์ž ์ด๋‚ด)
# '์™œ'๋ผ๋Š” ๊ฒƒ์— ์ดˆ์ ์„ ๋งž์ถฐ ์ž‘์„ฑ

################
# ๊ผฌ๋ฆฟ๋ง(footer)์„ ์•„๋žซ์ค„์— ์ž‘์„ฑ (ํ˜„์žฌ ์ปค๋ฐ‹๊ณผ ๊ด€๋ จ๋œ ์ด์Šˆ ๋ฒˆํ˜ธ ์ถ”๊ฐ€ ๋“ฑ)
# ํ•ด๊ฒฐ -> Closes(์ข…๋ฃŒ), Fixes(์ˆ˜์ •), Resolves(ํ•ด๊ฒฐ)
# ์ฐธ๊ณ  -> Ref(์ฐธ๊ณ ), Related to(๊ด€๋ จ), See also(์ฐธ๊ณ )
# ์˜ˆ) Close #7

################
# :tada:Init: ํ”„๋กœ์ ํŠธ ๊ฐœ์‹œ
# :sparkles:Feat : ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
# :bug:Fix : ๋ฒ„๊ทธ ์ˆ˜์ •
# :fire:Remove : ์ฝ”๋“œ ์‚ญ์ œ
# :memo:Docs : ๋ฌธ์„œ ์ˆ˜์ •
# :white_check_mark:Test : ํ…Œ์ŠคํŠธ ์ฝ”๋“œ, ๋ฆฌํŒฉํ† ๋ง ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€
# :recycle:Refact : ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
# :rocket:Deploy : ๋ฐฐํฌ
# :hammer:Chore : ๋นŒ๋“œ ์—…๋ฌด ์ˆ˜์ •, ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์ˆ˜์ •
################

:tada:, :sparkles: ๋“ฑ ์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋Š” emoji์ด๋‹ค.

 

2.  .gitmessage ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ

ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

 

1๏ธโƒฃ VSC ๊ฐ™์€ ์—๋””ํ„ฐ ์•ˆ์—์„œ ์ง์ ‘ txt ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ์œ„์˜ template ๋‚ด์šฉ์„ ๋ณต๋ถ™ํ•œ๋‹ค.

 

2๏ธโƒฃ bash shell์—์„œ vi ๋˜๋Š” vim ํŽธ์ง‘๊ธฐ๋ฅผ ์ด์šฉํ•ด์„œ ๋งŒ๋“ ๋‹ค.

 

step1) ์›ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ ์œ„์น˜๋กœ ์ด๋™ํ•œ๋‹ค.

cd /path/user/project

 

step2) vi ํŽธ์ง‘๊ธฐ๋กœ ๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ํŒŒ์ผ์„ ์—ฐ๋‹ค (ํ•ด๋‹น ํŒŒ์ผ์ด ์—†์–ด๋„ ์—ด ์ˆ˜ ์žˆ๋‹ค = ์ž„์‹œ์ƒ์„ฑ)

vi .gitmessage

 

(ํŒŒ์ผ๋ช… ๋’ค์— .txt ํ™•์žฅ์ž ์ด๋ฆ„์€ ์„ ํƒ์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ถ™์—ฌ์ฃผ๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ ๋‚˜๋Š” ์•ˆ ๋ถ™์—ฌ์คฌ๋‹ค.)

 

step3) vi ํŽธ์ง‘๊ธฐ๊ฐ€ ์—ด๋ฆฌ๋ฉด 'i'ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ์„œ 'ํ…์ŠคํŠธ ์ž…๋ ฅ ๋ชจ๋“œ'๋กœ ๋ณ€๊ฒฝํ•œ ํ›„, ์œ„์˜ template ๋‚ด์šฉ์„ ์ž…๋ ฅํ•œ๋‹ค. (๋ณต๋ถ™ํ•œ๋‹ค)

 

step4) ์ž…๋ ฅ์ด ์™„๋ฃŒ๋˜๋ฉด 'esc'๋ฅผ ๋ˆŒ๋Ÿฌ์„œ ํ…์ŠคํŠธ ์ž…๋ ฅ ๋ชจ๋“œ๊ฐ€ ์•„๋‹Œ ๋ทฐ์–ด ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•ด์ฃผ๊ณ , ':wq'๋ฅผ ์ž…๋ ฅํ•ด์„œ ์ €์žฅ ๋ฐ ์ข…๋ฃŒํ•ด์ค€๋‹ค.

 

 

 

3. git commit template ์‹œ์Šคํ…œ ์„ค์ •ํ•˜๊ธฐ

 

์›๋ž˜๋Š” $ git commit -m "writing commit message" ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ปค๋ฐ‹๋ฉ”์‹œ์ง€๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค๋ฉด

์ด์ œ๋Š”

$ git config [optional] commit.template [path of template]

 

์œ„์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด 

$ git commit ๋ช…๋ น์–ด๋ฅผ ๊นŒ์ง€๋งŒ ์ž‘์„ฑํ•ด๋„, ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  'commit message tamplate ์ „๋ฌธ'์ด ๋ณด์ด๋„๋ก ์„ค์ •ํ•  ๊ฒƒ์ด๋‹ค.

 

์œ„์˜ ๋ช…๋ น์–ด์— ๋Œ€ํ•ด ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด์ž (๋ช…๋ น์–ด ํ•ด์„)

 

1๏ธโƒฃ $ git config

git์˜ ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ช…๋ น์–ด

 

2๏ธโƒฃ $ [optional]

์ด ๋ถ€๋ถ„์—๋Š” --global , --local , --system ์˜ ๋ช…๋ น์–ด๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

 

[1] --global ์ธ ๊ฒฝ์šฐ

$ git config --global commit.template [path of template]

ํ•ด๋‹น git ์„ค์ •์„ ์ „์—ญ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ฒ ๋‹ค.

์ฆ‰, ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ๋ชจ๋“  GIT ํ”„๋กœ์ ํŠธ์— ์ ์šฉ๋œ๋‹ค.

 

[2] --local ์ธ ๊ฒฝ์šฐ

$ git config --local commit.template [path of template]

ํ•ด๋‹น git ์„ค์ •์„ ์ง€์—ญ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ฒ ๋‹ค.

์ฆ‰, ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ํ˜„์žฌ ์ž‘์—… ์ค‘์ธ GIT ํ”„๋กœ์ ํŠธ๋งŒ ์ ์šฉ๋œ๋‹ค.

ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ๋งŒ ์„ค์ •์ด ์œ ํšจํ•˜๊ณ , ์™ธ๋ถ€ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ํ•ด๋‹น git ์„ค์ •์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

[3] --system ์ธ ๊ฒฝ์šฐ  (์‚ฌ์šฉํ•˜๊ธธ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ! ๋งŒ์•ฝ ๊ผญ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์กฐ์‹ฌํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค!)

$ git config --system commit.template [path of template]

ํ•ด๋‹น git ์„ค์ •์ด ์‹œ์Šคํ…œ ์ „์ฒด์— ์ ์šฉ๋œ๋‹ค.

์ฆ‰, ๋ชจ๋“  ์‚ฌ์šฉ์ž ๋ฐ ๋ชจ๋“  GIT ํ”„๋กœ์ ํŠธ์— ์ ์šฉ๋œ๋‹ค.

(*์ผ๋ฐ˜์ ์œผ๋กœ ์‹œ์Šคํ…œ ์ „์ฒด ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ด€๋ฆฌ์ž ๊ถŒํ•œ(sudo)์ด ํ•„์š”ํ•˜๋‹ค.)

์‹œ์Šคํ…œ ๋ ˆ๋ฒจ ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ์ฃผ์˜ํ•ด์•ผ ํ•˜๊ณ , ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋‚˜ ํŒ€ ํ”„๋กœ์ ํŠธํ•  ๋•Œ๋Š” ์ „์—ญ/์ง€์—ญ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.

 

4๏ธโƒฃ $ commit.template [path of template]

ํ•ด๋‹น ๊ฒฝ๋กœ ์œ„์น˜์— ์žˆ๋Š” ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์„ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ง€์ •ํ•˜๋Š” ๋ช…๋ น์–ด

 

 

 

๋”ฐ๋ผ์„œ ์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ๋ณธ์ธ ํ”„๋กœ์ ํŠธ์— ๋งž๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.๐Ÿงš

 

 

์—ฌ๊ธฐ๊นŒ์ง€ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด $ git add ๋ช…๋ น์–ด ๋กœ staging area์— ์ด๋™์‹œํ‚จ ๋’ค

์›๊ฒฉ์ €์žฅ์†Œ์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด $ git commit ๋ช…๋ น์–ด๋กœ ๋ฉ”์‹œ์ง€ ํ…œํ”Œ๋ฆฟ์ด ์—๋””ํ„ฐ์—์„œ ์—ด๋ฆฌ๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž๐Ÿ˜Š

 

 

 


[์‹ค์Šต]

๋‚˜๋Š” ์œ„์™€ ๊ฐ™์ด ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€์— .gitmessage๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์—ˆ๊ณ , ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„œ๋งŒ ์ ์šฉํ•˜๊ณ  ์‹ถ๊ธฐ ๋•Œ๋ฌธ์—

.gitmessage๊ฐ€ ์žˆ๋Š” ์œ„์น˜์—์„œ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์˜€๋‹ค.

$ git config --local commit.template .gitmessage

์•„๋ฌด๊ฒƒ๋„ ๋‚˜์˜ค์ง€ ์•Š์œผ๋ฉด ์ž˜ ์„ค์ •๋œ ๊ฒƒ์ด๋‹ค.

 

 

git add ์ดํ›„, git commit ๋ช…๋ น์–ด ์ž…๋ ฅํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด

'hint: Waiting for your editor to close the file... '์ด๋ผ๋Š” ํžŒํŠธ๊ฐ€ ๋‚˜์˜ค๋ฉด์„œ

COMMIT_EDITMSG ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

์œ„์™€ ๊ฐ™์ด ๋‚˜์˜จ ํ…œํ”Œ๋ฆฟ์„ ์ˆ˜์ •ํ•˜์—ฌ (#๊ฐ€ ์žˆ์œผ๋ฉด ์ฃผ์„์œผ๋กœ ์ธ์‹๋˜์–ด ์ €์žฅ์ด ์•ˆ ๋จ)

git commit message๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค!!!!

 

 

์‹ค์Šต ๋!๐Ÿ™Œ

 

 

 


[์ฐธ๊ณ ]

https://velog.io/@ye-ji/Git-PR-%EC%9E%98-%EC%93%B0%EB%8A%94-%EB%B0%A9%EB%B2%95