โ ๏ธ Noticeโ ๏ธ
- ๋ณธ Repository ๋ ๊ณต๋๊ฐ๋ฐ(ํ์ ) ์ ์ฌ์ฉ๋๋ Git ์์คํ ์ ์ฌ์ฉ ํ์ค์ ์ฌ์ ์ ์์ฑํ ๊ฒ์ด๋ฉฐ ๊ฐ ๊ฐ๋ฐ๋ง๋ค Fork ๋๋ Clone ํ์ฌ ๋ด์ฉ์ ํ์ ๋ง๊ฒ ์์ ํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
Clone ํ ์๋ ๋ผ์ด์ผ์ค๋ฅผ ์ค์ํ๋ ๋ฒ์ ๋ด์์ ์์ ๋กญ๊ฒ public/private repository์ ์ฌ๋ณธ์ ์ฌ๋ฆด ์ ์๋ค.- ๋ณธ ๊ฐ์ด๋๋ผ์ธ์ ๊ถ๊ทน์ ์ธ ๋ชฉ์ ์ Git ์์คํ ์ ์ด์ฉํ์ฌ ํจ์จ์ ์ด๊ณ ๊ฐ๋ ์ฑ์ด ๋์ ๊ฐ๋ฐ ์ด๋ ฅ์ ๋จ๊ธฐ๊ณ ํ์ ๊ฐ ํ์ ์ด ์ํํ๊ฒ ์งํ๋๋ ๊ฒ์ ์๋ค.
- ๋ณธ ๊ฐ์ด๋๋ผ์ธ์ ์๋ฆฌ๋ชฉ์ ์ ๊ดํ ์ ํ ์์ด ๋๊ตฌ๋ ์ฌ์ฉํ ์ ์์ผ๋ ๋ณธ ๊ฐ์ด๋๋ผ์ธ์ ์ฑ์ฉํ์ฌ ๋ฐ์ํ ๋ฌธ์ ์ ์ฑ ์์ ์ฌ์ฉํ ๊ฐ์ธ ๋๋ ๋จ์ฒด์ ์๋ค.
- ๋ณธ ๊ฐ์ด๋๋ผ์ธ์ ๋ผ์ด์ผ์ค ๊ท์น์ ๋ฐ๋ฅธ๋ค.
์ฌ์ ์ธ ๋ชฉ์ ์ผ๋ก ์ด์ฉํ๋ ๊ฒฝ์ฐ cc-by ์กฐํญ์ ์ค์ํ์ง ์์๋ ๋๋ฉฐ, ์คํ์์ค ํ๋ก์ ํธ ๋ฑ ๊ณต๊ณต์ ๋ชฉ์ ์ผ๋ก ์ด์ฉ ์์๋ ๋ณธ๋ฌธ์ ๋งํฌ๋ฅผ ๊ธฐ์ฌํ์ฌ์ผ ํ๋ค.
์ด๋ repository์ ๊ณต๊ฐ๋ฒ์์ธ public/private ๊ณผ๋ ๋ณ๊ฐ์ ๋ด์ฉ์ด๋ค.
โ ๏ธ Batchfile์ ํตํด .git ํด๋์ hook ์ค์น, .git ํด๋์ ๊ฐ์ ์์น์ ๋๊ณ ์คํ- TAG์ emoji ์ฌ์ฉ๋ฒ ์ฝ๊ธฐ ๋ฐ๋ก๊ฐ๊ธฐ >
- ์ถ์ฒ git ๊ด๋ จ ๋งํฌ ๋๋ฌ๋ณด๊ธฐ
Git-Flow ๋ฐฉ์์ ์ด๋ ฅ๊ด๋ฆฌ์์๋ ๋ค์๊ณผ ๊ฐ์ 5๊ฐ์ง ๋ธ๋์น๊ฐ ์กด์ฌํ๋ค.
master
๋ก๋ ๋ถ๋ฆฌ๋ ๋ธ๋์น๋ก ๋ฐฐํฌ์ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋๋ค.
โ ๏ธ ๋ฐ๋์ ๋ฐฐํฌ ๊ฐ๋ฅํ ์ํ์ ์ปค๋ฐ๋ง์ด ์กด์ฌํ์ฌ์ผ ํ๋ค.
์ฆmain
์ ๊ฐ ์ปค๋ฐ์ ํ๋ก๊ทธ๋จ์ ๋ฒ์ ์ ๋ํ๋ธ๋ค๊ณ ๋ณผ ์ ์๋ค.
feature
์์ ๊ฐ๋ฐํ ๊ธฐ๋ฅ๋ค์ด ํตํฉ๋๋ค.
โ ๏ธ feature
๋ธ๋์น merge ์ ๋ฐ๋์--no-ff
์ต์ ์ ํตํ์ฌdevelop
๋ธ๋์น๊ฐfeature
๋ธ๋์น์ ๋ํด fast-forward ํ์ง ์๋๋ก ํ๋ค.develop
๋ธ๋์น์ ์ด๋ฒ ๋ฒ์ ์ ํ์ํfeature
๋ธ๋์น๋ค์ด ๋ชจ๋ merge ๋๊ณ ๋ฒ๊ทธ๋ฅผ ๊ณ ์ณค๋ค๋ฉดrelease
๋ธ๋์น๋ก merge ์ํจ๋ค.
๊ธฐ๋ฅ๊ณผ ๊ด๋ จ๋ ๊ฐ๋ฐ์ด ์ด๋ฃจ์ด์ง๋ค.
์ผ๋ฐ์ ์ผ๋ก develop
๋ธ๋์น์์ ๋ถ๊ธฐ๋์ด์ง๋ค.
feature/garbage-collection
๊ณผ ๊ฐ์ด ๊ธฐ๋ฅ์ ์ด๋ฆ์ ์ ๋๋ค.
- ์๋ก์ด ๊ธฐ๋ฅ, ๋ฒ๊ทธ ์์ ์ด ํ์ํ ๋๋ง๋ค ๋ถ๊ธฐํ๋ค.
- ๊ฐ๊ฐ์ ๊ธฐ๋ฅ๋ณ๋ก ๊ฐ๊ฐ์
feature
๋ธ๋์น๋ฅผ ๋ง๋ ๋ค. - โน๏ธ ์ผ๋ฐ์ ์ผ๋ก ๊ณต์ ๊ฐ ํ์ํ์ง ์์ผ๋ฏ๋ก ๋ก์ปฌ์์ ๋ธ๋์น๋ฅผ ๊ด๋ฆฌํ๊ณ ํ์๊ณผ์ ๋ด์ฉ ๊ณต์ ๋
develop
์ ์์ฑ๋ ๊ธฐ๋ฅ์ merge ํจ์ผ๋ก์จ ํ ์ ์๋ค.
ํ์ ๋ฐ๋ผfeature
๋ธ๋์น๋ฅผ push ํด๋ ๋ฌด๋ฐฉํ๋ค.
develop
๋ธ๋์น์์ ๋ฐฐํฌ ์์ ์ผ๋ก ์ผ๊ณ ์ ํ๋ ์ปค๋ฐ์์ ๋ถ๊ธฐํ์ฌ ๋ฐฐํฌ๋ฅผ ์ํ ์ผ๋ จ์ ์์
์ ๊ฑฐ์น๋ค.
์ต์ข
ํ
์คํธ, ๋ฒ๊ทธ์์ , ๋ฒ์ ๊ด๋ จ ๋ฌธ์์์ฑ(์
๋ฐ์ดํธ ๋ก๊ทธ ๋ฑ) ๊ณผ ๊ฐ์ ์์
๋ค์ด ํฌํจ๋๋ค.
๋ฒ์ ์ ๋ฐฐํฌ ๋ฒ์ ์ ์ ๋๋ค. (release/1.0
)
release
๋ธ๋์น์ ์ปค๋ฐ๋๋ ์์ ๋ถํฐ ๋ฐฐํฌ ์ฌ์ดํด์ด ์์๋๋ค.
์์ ์ด ๋๋๋ฉดmain
๋ธ๋์น์ merge ํ๊ณ ๋ฐฐํฌ๊ฐ ์ด๋ค์ง๋ค.- ๋ฐฐํฌ ์ค๋น ๊ณผ์ ์์ ์ด๋ฃจ์ด์ง ๋ฒ๊ทธ์์ ๋ฑ์ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐฐํฌ ํ ๋ค์
develop
๋ธ๋์น๋ก meger ํ์ฌ ์ ๋ฐ์ดํธ ํ๋ค. โ ๏ธ develop
์์ ๋ถ๊ธฐ ์ดํ์๋ ํด๋น ๋ฐฐํฌ์ ๊ด๋ จ๋์ง ์์ ์์ ์release
๋ธ๋์น๋ก merge ํ์ง ์๋๋ค.
๋ฐฐํฌํ ๋ฒ์ ์ ๋ํ์ฌ ๊ธด๊ธํ ๋ฒ๊ทธ ์์ ์ด ํ์ํ ๊ฒฝ์ฐ์๋ง ์ด์ฉํ๋ค.
๋ฒ์ ์ ๋ถ๊ธฐ๋ ๋ฐฐํฌ ๋ฒ์ ์ ๋ค์ ๋ฒ์ ์ ์ ๋๋ค. (0.1
๋ฒ์ ์์ ๋ฌธ์ ๋ฐ์ ์ hotfix/0.2
์ ๊ฐ์ด ์์ฑ)
main
์์ ๋ถ๊ธฐํ์ฌ ์์ ์ ์ํ๋ ๋ถ๋ถ๋ง ์์ ํ ๋ค์ merge ์ํจ๋ค.
์ดํ ๋ฐ๋กdevelop
๋ธ๋์น์๋ merge ์ํจ๋ค.- โน๏ธ ๊ธด๊ธํ์ง ์์ ๋ฒ๊ทธ ์์ ์ ๋ค์ ๋ฒ์ ์์ ์ฒ๋ฆฌํ ์ ์๋๋ก ํ๋ค.
ํญ์ ์ ์ง๋๋ ๋ธ๋์น์ธ main
๊ณผ develop
์ ์ ์ธํ ๋๋จธ์ง ๋ธ๋์น๋ merge ์ดํ ํ์๊ฐ ์์ผ๋ฏ๋ก ์ญ์ ํ๊ฒ ๋๋ค.
๋จ ํน์ ๋ชจ๋ฅผ ์ํฉ์ ๋๋นํ์ฌ merge ํ ๋ค์ ๋ฒ์ , ๋๋ ํ์ด ์ ํ ๊ธฐ๊ฐ ์ดํ์ ์ญ์ ํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
git ์ฌ์ดํธ์์ ์๊ฐํ๋ 3๊ฐ์ง ๋ฐฉ์์ workflow ๊ฐ ์๋ค.
ํ๋์ repository ๋ฅผ ๊ฐ ๊ฐ๋ฐ์๊ฐ clone ํ์ฌ ์ฌ์ฉ, ์์
์ ๋ธ๋์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌํ์ฌ ์ฌ์ฉํ๋ค.
ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์ปค์ง๋ ๊ฒฝ์ฐ, ๊ฐ ๊ฐ๋ฐ์์ ์์
์ด ๋ค๋ฅธ ๊ฐ๋ฐ์์ ๊ฒน์น์ง ์๋ํ ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฐฉ๋ฒ.
์์ repository ๋ฅผ ๊ฐ๊ฐ์ ๊ฐ๋ฐ์๊ฐ fork ํ์ฌ private repository ๋ฅผ ๋ง๋ค๊ณ ,
์ด๋ฅผ clone ํ์ฌ local repository ๋ฅผ ๋ง๋ ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Centralized Workflow ์ ๋์ผํ ๋ธ๋์น ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ธ๊ฐ๋ฉฐ, ๊ฐ์ธ๋ณ
GitHub-flow ๊ธฐ๋ฐ์ ๊ณต๊ฐ repository ์ ์คํ์์ค ํ๋ก์ ํธ์์ ์ ์ฉํ ๋ฐฉ์.
์ด๋ํ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์๋ค.
๊ธฐ๋ณธ์ ์ธ ์์์ ๋ค์๊ณผ ๊ฐ๋ค : TAG: message
๋๋ [TAG] message
๋๋ โจ message
ํ์ ๋ง๋ ์ฌ์ฉ๋ฒ์ ๊ณจ๋ผ ์ฌ์ฉํ๋๋ก ํ๋ค.
- TAG๋ ํด๋น ์ปค๋ฐ์ ํ์ ์ผ๋ก, ๋ณ๊ฒฝ์ฌํญ์ด ๋ฌด์๊ณผ ๊ด๋ จ๋ ๊ฒ์ธ์ง ๋ํ๋ธ๋ค.
- message๋ ํด๋น ์ปค๋ฐ์ ๋ด์ฉ์ผ๋ก, ์ผ์ข ์ title ์ ํด๋นํ๋ค.
- message ์๋ ๋ณ๊ฒฝ์ฌํญ๋ค์ ๋ํ ์์ฝ์, ์ธ๋ถ์ ์ธ ์ฌํญ์ content ์ ์ ๋๋ค (content๋ ํ์ ์ ์ ํ์ ์ผ๋ก ์์ฑํ๋ค).\
โน๏ธ JetBrains ๊ณ์ด IDE ์ ๊ฒฝ์ฐ, ์ํฐ๊ฐ ์ฐ์ํ์ฌ 2๋ฒ ์ ๋ ฅ๋ ์ง์ ์ ์ปค๋ฐ ๋ฉ์์ง๋ถํฐ content ๋ก ์ธ์ํฉ๋๋ค :
[TAG] Message of the commit. This line is still in the message section. Here's the content section of our commit.
TAG ์์น์๋ ๋ค์๊ณผ ๊ฐ์ ํ๊ทธ๋ค์ด ๋ค์ด๊ฐ ์ ์๋ค.
TAG | emoji | Use when |
---|---|---|
Feat | โจ | ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐ |
Fix | ๐ | ๋ฒ๊ทธ ์์ |
Patch | ๐ฉน | ์ฌ์ํ ๋ฒ๊ทธ, ๋ฐธ๋ฐ์ค, ๊ณ์ฐ์, ์์๊ฐ ์์ |
Refactor | โป๏ธ | ์ ์ง๋ณด์๋ฅผ ์ํ ์ฝ๋ ๋ฆฌํฉํฐ๋ง (์ต์ ํ๋ Opt ์ด์ฉ) |
Opt | โก | ๋ก์ง ๋ฐ ์ฑ๋ฅ ์ต์ ํ (๋จ์ ์ ์ง๋ณด์๋ Refactor ์ด์ฉ) |
Style | ๐จ | ๋ก์ง์ ๋ณ๊ฒฝ์ด ์๋ ์ฝ๋ format, structure, ๋ณ์๋ช ๋ณ๊ฒฝ |
Test | ๐งช | Test ์ ๊ด๋ จ๋ ๋ชจ๋ ์์ |
Docs | ๐ | Readme, ์ค๋ช ์, ์ฝ๋ doc ๊ด๋ จ ์์ (๋ฆฌ์์ค ์ ์ธ) |
Res | ๐ฆ | ์์กด์ฑ ์๋ ๋ชจ๋ ๋ฆฌ์์ค ํ์ผ ๋ฐ ๋น๋ (์ด๋ฏธ์ง, JSON, .exe ๋ฑ) |
Dep | ๐ | ์์กด์ฑ ์์ (์ถ๊ฐ / ์ญ์ / ๋ฒ์ ๋ณ๊ฒฝ) |
CI | ๐๏ธ | CI ๊ด๋ จ ์์ |
Merge | ๐๏ธ | Merge ๊ด๋ จ ์์ |
Revert | โช | ๋ณ๊ฒฝ์ฌํญ Revert |
Cherry | ๐๏ธ | Cherry-pick ์ํ |
Git | ๏ธ๐ | ๊ธฐํ Git ๊ด๋ จ ์์ |
Rename | โ๏ธ | ํ์ผ, ํด๋๋ช ๋ณ๊ฒฝ |
Clean | ๐งน | Redundant ํ ์ฝ๋, ์ฃผ์, ํ์ผ ๋ฑ์ ์ ๊ฑฐ |
Chore | โฟ | ๊ธฐํ ์ค์๋๊ฐ ๋ฎ์ ์์ ๋ฐ ๋ณ๊ฒฝ์ฌํญ (typo ์์ , ๋จ์ comment ์ถ๊ฐ) |
โน๏ธ TAG ์ ๋์๋๋ emoji ๋ carloscuesta์ gitmoji ๊ฐ์ด๋๋ผ์ธ์์ ๊ฐ์ํํ์ฌ ๋ง๋ค์ด์ก์ต๋๋ค.
โ ๏ธ ๋ณธ repository ์ ๋ด์ฉ์ git hook ์ ์ฌ์ฉํ์ฌ ์๊ธฐํ emoji๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ ๊ธฐ์ค์ผ๋ก ์ ํ์์ต๋๋ค.
carloscuesta ์ gitmoji ๋ฐฉ์์ ํ๋จ์ Additional methods ์ ์ถ๊ฐ๋์ด์์ต๋๋ค.
๋ณธ repository ์ ์๋ ์ปค์คํ
prepare-commit-msg hook ์ ์ด์ฉํ๋ ๊ฒฝ์ฐ, :tag_name: ํํ๋ก message ์์ฑ ์ ์๋์ผ๋ก ๋ณํ๋๋ค.
TAG์ ๋ฌ๋ฆฌ tag_name ์ ์๋ฌธ์๋ก ์์ํ๋ค :
// example 1
//// Commit Message
:refactor: Refactor dialogue system
//// Ouput (on git log)
โป๏ธ Refactor dialogue system
// example 2
//// Commit Message
:opt::patch: :Fix: [fix]
//// Ouput (on git log)
โก๐ฉน :Fix: [fix]
Additional methods
ํ์ ๋ฐ๋ผ ์ ํ์ ์ผ๋ก ์ฌ์ฉ๊ฐ๋ฅํ [TAG1][TAG2] Message
ํ์์ผ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ด ์ด์ฉํ ์ ์๋ค :\
- TAG1 ์ ์์ ๋ถ๋ฅ, TAG2 ๋ฅผ ํ์ ๋ถ๋ฅ๋ก์ ์ฌ์ฉํ๋ค.
- TAG1 ๊ณผ TAG2 ์ ํด๋นํ๋ ๋ณ๊ฒฝ์ฌํญ์ด ํด๋น commit ์์ ๋ชจ๋ ๋ค์ด์์์ ์๋ฏธ (์ด ๊ฒฝ์ฐ
[TAG1][TAGn] Message
๋ ๊ฐ๋ฅํ๋, ๊ถ์ฅํ์ง ์๋ํจ) ๊ฐ๋ ์ฑ ์ธก๋ฉด์์ ์ข์ง ๋ชปํ๋ฏ๋ก ์ด์คํ๊ทธ ๋ฐฉ์์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์์-ํ์ ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ง ์ด์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
โป๏ธ, โก ๋ฑ์ ์์ด์ฝ๋ค์ ์ด์ฉํ์ฌ ์ปค๋ฐ ์ ํ์ ๋ํ๋ด๋ฉฐ github ์์์ ์ด๋ชจํฐ์ฝ์ ์์ฑ์ด :emoji_name:
ํํ๋ก ๊ฐ๋ฅํ ์ ์ ์ด์ฉํ๋ค. (Discord ์ ๋์ผํ ๋ฐฉ์)
์์์ ์์ ์๊ฐํ git hook ๋ฒ์ ์ gitmoji ์์๊ณผ ๊ฐ์ด TAG ์์น์ ์ด๋ชจ์ง๋ฅผ ๋์ ๋ฃ๋ ๊ฒ์ผ๋ก, โป๏ธ Refactor dialogue system's control method
์ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค.
carloscuesta์ gitmoji ๊ฐ์ด๋๋ผ์ธ์ด ์กด์ฌํ๊ณ , ์ด๋ฅผ ์์ ์ ํ์ ๋ง๊ฒ ๊ฐ์ํํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
๋ก์ปฌ์์์๋ ์ด๋ชจํฐ์ฝ์ด ์๋ ์ผ๋ฐ ํ
์คํธ ํํ(e.g. :zap:
)๋ก ๋ณด์ด๋ฏ๋ก ๋ก์ปฌ์์ ์ฌ์ฉ ์ ์คํ๋ ค ๊ฐ๋
์ฑ์ด ๋จ์ด์ง๋ ๋ฌธ์ ๊ฐ ์๋ค.
๋ฐ๋ผ์ ๋ก์ปฌ์์๋ ๋ณธ repository์ gitmoji ๋ฒ์ ์ ์ด์ฉํ๊ฑฐ๋ ์๋์ ์์์ ๊ฐ์ด ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค :
- TAG + emoji ์์ฑ ์์ :
- ์์ฑ :
[Refactor] :recycle: Refactor dialogue system's control method
- ๋ก์ปฌ ๋ด ํ์ :
[Refactor] :recycle: Refactor dialogue system's control method
- GitHub ๋ด ํ์ :
[Refactor] โป๏ธ Refactor dialogue system's control method
- emoji ์์ฑ ์์ :
- ์์ฑ :
โป๏ธ Refactor dialogue system's control method
- ๋ก์ปฌ ๋ด ํ์ :
โป๏ธ Refactor dialogue system's control method
- GitHub ๋ด ํ์ :
โป๏ธ Refactor dialogue system's control method
โน๏ธ JetBrains ์ฌ์ IDE ์์ ์ฌ์ฉ๊ฐ๋ฅํ gitmoji plugin ์ ์ต์ ์ ํตํด
carloscuesta์ gitmoji ๊ฐ์ด๋๋ผ์ธ ์์ ์ํ๋ ์ด๋ชจ์ง๋ฅผ:emoji_name:
๋๋๐
ํํ๋ก ๋ฐ๋ก ์ฝ์ ํ ์ ์๋ค.
- ์ปค๋ฐ๋ฉ์์ง๋ 50์ ์ด๋ด๋ก ์์ฑํ ๊ฒ์ ๊ถ์ฅํ๋ค.
- ๋ณ๋์ ์ธ๋ถ ๋ด์ฉ์ content ์ ๋ฐ๋ก ์ ๋๋ก ํ๋ค.
- ์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก ์์ํ๋ค. ๋ฉ์์ง์ ์์์ ๋์ฌ ์ํ์ ์ฌ์ฉํ๋ค.
๋์ฌ make ๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ,[TAG] Make...
๊ฐ ์ฌ๋ฐ๋ฅธ ํ๊ธฐ๋ฒ์ด๋ค.
make
,Making
,Makes
,Made
๋ชจ๋ ์๋ชป๋ ํ๊ธฐ๋ฒ์ด๋ค.
- ์ปค๋ฐ์ ๋ณ๊ฒฝ์ฌํญ์ ๋ํด ์ถ๊ฐ์ ์ผ๋ก ๊ธฐ์ ํด์ผํ๋ ๋ด์ฉ์ด ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค.
- ์ปค๋ฐ์ content๋ ํด๋น ์ปค๋ฐ์ ์ ํํ๊ธฐ ์ ๊น์ง๋ ํ์๋์ง ์์ผ๋ฉฐ, ์ปค๋ฐ ์ธ๋ถ์ฌํญ ์กฐํ ์ ํ์ผ ๋ณ๊ฒฝ์ฌํญ๊ณผ ํจ๊ป ๋ด์ฉ์ด ๋ํ๋๋ค (GitHub/๋ก์ปฌ ๋ชจ๋ ํด๋น)
- ๊ทธ๋ฌ๋ฏ๋ก ์ค์ํ ๋ด์ฉ์ message ๋จ์์ ๋ณด์ฌ์ค ์ ์๋๋ก ํ๋ค.
Doc ์ ๋ฉ์๋, ๋ณ์ ๋ฑ์ ์ค๋ช
์ ๋ถ์ฌ ์ฝ๋ ๋ฆฌ๋ทฐ ์ ๋์ ๊ฐ๋
์ฑ์ ์ ๊ณตํ๊ณ IDE ์์ ํ์๋ ์ ์๊ฒ ํ๋ค.
//
or ///
or /** Content */
or #
๋ฑ์ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๋ค.
Doc ๋ฐฉ์์ ์ธ์ด๋ง๋ค ๋ค๋ฅด๋ฏ๋ก ๋ฌธ๋ฒ์ ๋ง๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
๋ชจ๋ ๋ฉค๋ฒ๋ค์ด Doc์ ๊ฐ์ง ํ์๋ ์์ผ๋, ๋ค๋ฅธ ์ฌ๋์ด ๋ณด๊ณ ์ดํดํ ์ ์์ด์ผ ํ๋ฏ๋ก ๋๋ถ๋ถ์ ๋ฉค๋ฒ์๊ฒ ์์ฑํ๋ ๊ฒ์ด ๊ถ์ฅ๋๋ค.
Doc์ ์์ฑํ๋ค๋ฉด, ๋ค์ ์ฌํญ๋ค์ ์ถฉ์กฑ์ํค๋๋ก ํ๋ค :
- ๋ณ์, ๋ฉ์๋, Property(ํ๋กํผํฐ) ๊ฐ ํ๋ ์ญํ ๊ณผ ์์
์ ์ ๋๋ค.
์ด๋ฆ์ ๋ณด๊ณ ์ถฉ๋ถํ ์ ์ถ๊ฐ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์๋ตํด๋ ์ข๋ค. (e.g. GetText) - ์๊ธฐํ ์ญํ ๊ณผ ์์
์ค ๋ฐ๋์ ์์๋์ด์ผ ํ๋ ๋ด์ฉ์ ์ ๋๋ค.
(e.g. GetAccumulatedValue() ๋ฉ์๋๊ฐ ๊ฐ์ ๋ฐํํจ๊ณผ ๋์์ ํน์ ๋ณ์์ ๊ฐ์ 0์ผ๋ก ์ด๊ธฐํ ํ๋ ๊ฒฝ์ฐ ๋ฑ) - Parameter(๋งค๊ฐ๋ณ์), GenericType(๊ฐ๋ณํ์
, ํ์
๋ณ์) ๋ฑ์ด ๋ฌด์์ ํ์๋ก ํ๋์ง ๋ช
์ํ๋ค.
๋ง์ผint id
๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ ๊ฒฝ์ฐ ๋ฌด์์ id ์ธ์ง, ๋ฌด์์ ๊ทผ๊ฑฐํ id ์ธ์ง ๋ช ์ํ๋ค. - ๋ช
์์ ์ผ๋ก ์์ธ๋ฅผ
throw
ํ๋ ๊ฒฝ์ฐ ํด๋น ์์ธ์ ๋ฐ์ ์กฐ๊ฑด์ ๋ช ์ํ๋ค. - ๋ค๋ฅธ ๋ฉ์๋, ํด๋์ค ๋ฑ๊ณผ ์ ๊ธฐ์ ์ธ ๊ด๊ณ๋ฅผ ๋งบ๋ ๊ฒฝ์ฐ ์ด๋ฅผ ์ฐธ์กฐํ์ฌ ๋ฐ๋ก๊ฐ๊ธฐ๋ฅผ ์ ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
(ํด๋น ๊ธฐ๋ฅ์ด ์ง์๋๋ Doc์ ๊ฐ์ง ์ธ์ด์ ํํจ)
//
or #
๋ฑ ์ฌ์ฉํ๋ ์ธ์ด์ ๋ฌธ๋ฒ์ ๋ฐ๋ฅธ๋ค.
Comment-block ๋ ์กด์ฌํ๋, ๋๋๋ก์ด๋ฉด One-line comment ๋ฅผ ์ด์ฉํ์ฌ ์ ๋๋ก ํ๋ค. :
// This is comment.
// You may use comment block, but try not to use it.
// Because we'll use it to write "Important Comment"
์ด์ ๊ฐ์ด ์ฃผ์ ๋ธ๋ญ์ ์ฌ์ฉ์ ์ ํํ๋ ์ด์ ๋ ํ์ ํ Important comment ์ ์ฌ์ฉํ๊ธฐ ์ํจ์ด๋ค.
// TODO Content
or # TODO Content
๋ฑ ์ฌ์ฉํ๋ ์ธ์ด์ ๋ฌธ๋ฒ์ ๋ฐ๋ฅธ๋ค.
์์ ๊ฐ์ด ์ ์ ๊ฒฝ์ฐ, ์ผ๋ถ IDE๋ TODO List ๋ก ๋ชจ์์ ํ๊ธฐํด์ฃผ๋ ๊ธฐ๋ฅ์ด ์๋ค.
์ถ๊ฐ์ ์ผ๋ก ์์ ๋ง์ TAG ๋ฅผ ๋ถ์ฌ // TODO TAG Content
ํ์์ผ๋ก ์ฌ์ฉํ์ฌ๋ ์ข๋ค.
(e.g. // TODO SYNC Remove this
, // TODO FOREST Optimize logic
)
/* Content */
or /** */
or ''' Content '''
๋ฑ์ ๋ธ๋ญ ์ฃผ์์ ์ด์ฉํ๋ค.
์ด๊ณณ์ ๋ฉ์๋ ํธ์ถ ์์, ๊ฐ ํ ๋น ์ ์ฃผ์์ ๋ฑ ์ฝ๋ ๋ด์ฉ์ ๊ฑด๋๋ฆด ๋ ์ฃผ์ํ์ฌ์ผ ํ๋ ๋ถ๋ถ๋ค์ ๋ช
์ํ๋ค.
๋ํ ํ์ ๊ฐ ๋ธ๋ญ ์ฃผ์์ ์ค์ ๋ด์ฉ ํ๊ธฐ์ ์ฌ์ฉํ๊ธฐ๋ก ํฉ์ํ ๊ฒฝ์ฐ, ๋ค์๊ณผ ๊ฐ์ด IDE Color scheme ์ค์ ์ ๋ฐ๊พธ๋ฉด ๊ฐ๋
์ฑ์ ํฅ์์ํฌ ์ ์๋ค :
๋ณธ ๋ ํฌ์งํ ๋ฆฌ์ ๋ด์ฉ๊ณผ ๊ด๋ จ๋ ๋ถ๋ถ๋ค์ ๋ค์ฌ์ฐ๊ธฐ๋ก ๊ฐ์กฐํ์ ํ์๋ค.
โ๏ธCommit message rule reference
โพ๏ธSW release lifecycle
๐Gitmoji by carloscuesta
๐ณKinds of branches in Git-Flow
๐Merge methods
๐ฅStash/Shelve Difference
โญConventional Commits