๐ŸŒฟ ๋ธŒ๋žœ์น˜ ๊ด€๋ฆฌ ์ „๋žต (Branch Management Guide)

NOTE

๋ธŒ๋žœ์น˜ ๋„ค์ด๋ฐ ์ฒด๊ณ„, ์ž‘์—… ํ๋ฆ„, MR ์ž‘์„ฑ ๊ฐ€์ด๋“œ๋ฅผ ์ •๋ฆฌํ•œ Git ๋ธŒ๋žœ์น˜ ์ „๋žต ๋ฌธ์„œ.

๋ณธ ํ”„๋กœ์ ํŠธ์˜ ํšจ์œจ์ ์ธ ํ˜‘์—…๊ณผ ์ฝ”๋“œ ํ’ˆ์งˆ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์•„๋ž˜์˜ ๋ธŒ๋žœ์น˜ ์ „๋žต์„ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“Œ ๊ฐ€์ด๋“œ ๋‚ด์šฉ

1. ๋ธŒ๋žœ์น˜ ์ฒด๊ณ„ (Naming Convention)

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

๋ถ„๋ฅ˜๋ธŒ๋žœ์น˜ ํ˜•์‹์„ค๋ช…
์šด์˜ ๋ธŒ๋žœ์น˜main์ตœ์ข… ๋ฐฐํฌ์šฉ ์ตœ์ƒ์œ„ ๋ธŒ๋žœ์น˜ (์ง์ ‘ Push ๋ถˆ๊ฐ€)
ํ”„๋กœ์ ํŠธ ์ž‘์—…[ํ”„๋กœ์ ํŠธ๋ช…]/mainํ”„๋กœ์ ํŠธ๋ณ„ ๊ธฐ์ค€ ๋ธŒ๋žœ์น˜ (main์—์„œ ํŒŒ์ƒ)
ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ[ํ”„๋กœ์ ํŠธ๋ช…]/feature/[์ž‘์—…๋ช…]๊ธฐ๋Šฅ ๊ฐœ๋ฐœ, ๋ฒ„๊ทธ ์ˆ˜์ • ๋“ฑ ์ผ๋ฐ˜ ์ž‘์—… ([ํ”„๋กœ์ ํŠธ๋ช…]/main ํŒŒ์ƒ)
SI ๋ฆฌํŒฉํ† ๋งfeature/[์ž‘์—…๋ช…]SI ๋ฆฌํŒฉํ† ๋ง ์ „์šฉ ๋…๋ฆฝ ์ž‘์—… ๋ธŒ๋žœ์น˜

2. ์ž‘์—… ํ๋ฆ„ (Workflow)

2.1 ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ๊ทœ์น™

์ƒˆ๋กœ์šด ์ž‘์—…์„ ์‹œ์ž‘ํ•  ๋•Œ๋Š” ์•„๋ž˜์˜ ๋ช…๋ช… ๊ทœ์น™์„ ์ค€์ˆ˜ํ•˜์—ฌ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํ˜•์‹: [prefix]-[์ž‘์—…๋‚ด์šฉ]_[์ž‘์—…์ž]_[๋‚ ์งœ]

  • ์ผ๋ฐ˜ ์ž‘์—… ์˜ˆ์‹œ: git checkout -b project-a/feature/add-bank_dev01_260219
  • SI ๋ฆฌํŒฉํ† ๋ง ์˜ˆ์‹œ: git checkout -b feature/perf-transInfo_dev01_260219

[ Prefix ํ™œ์šฉ ๊ฐ€์ด๋“œ ]

Prefix์„ค๋ช…
add์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
fix๋ฒ„๊ทธ ๋ฐ ์˜ค๋ฅ˜ ์ˆ˜์ •
refactor์ฝ”๋“œ ๊ตฌ์กฐ ๊ฐœ์„  (๊ธฐ๋Šฅ ๋ณ€ํ™” ์—†์Œ)
perf์ฟผ๋ฆฌ ํŠœ๋‹ ๋ฐ ์„ฑ๋Šฅ ์ตœ์ ํ™”
removeํŒŒ์ผ ๋ฐ ์ฝ”๋“œ ์‚ญ์ œ

2.2 ์ฝ”๋“œ ๋ฐ˜์˜ ๋ฐ ๋จธ์ง€ (Merge)

  • main ์ง์ ‘ Push ๊ธˆ์ง€: ๋ชจ๋“  ์ฝ”๋“œ๋Š” **Merge Request(MR)**๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ตœ์‹  ์ƒํƒœ ์œ ์ง€: ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ์ „ ํ•ญ์ƒ ์ƒ์œ„ ๋ธŒ๋žœ์น˜์—์„œ pull์„ ๋ฐ›์•„ ์ตœ์‹  ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

2.3 ๋ธŒ๋žœ์น˜ ๊ด€๋ฆฌ ์ˆ˜์น™

  1. ๊ธฐ๋Šฅ ๋‹จ์œ„ ์ƒ์„ฑ: ํ•˜๋‚˜์˜ ๋ธŒ๋žœ์น˜์—์„œ๋Š” ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ(๋˜๋Š” ์ด์Šˆ)๋งŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ์›์น™์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋‹จ์œ„ ์ปค๋ฐ‹: ํ†ตํ•ฉํ…Œ์ŠคํŠธ ์ˆ˜์ • ๋“ฑ ์ž‘์€ ๋ฒ”์œ„์˜ ์ž‘์—… ์‹œ์—๋Š” fix-test ๋“ฑ์œผ๋กœ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ฐ˜์˜ ํ›„ ์ฆ‰์‹œ ์‚ญ์ œ: MR์ด ์™„๋ฃŒ๋œ ๋ธŒ๋žœ์น˜๋Š” ์ฆ‰์‹œ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. (๋ฏธ์‚ญ์ œ ์‹œ 3๊ฐœ์›” ์ฃผ๊ธฐ ์ •๊ธฐ ์‚ญ์ œ)

3. Merge Request ์ž‘์„ฑ ๊ฐ€์ด๋“œ

๋ชจ๋“  MR์€ ํŒ€์› ๊ฐ„์˜ ์›ํ™œํ•œ ๋ฆฌ๋ทฐ๋ฅผ ์œ„ํ•ด ์•„๋ž˜ ์–‘์‹์„ ์ค€์ˆ˜ํ•˜์—ฌ ์ž‘์„ฑํ•ด ์ฃผ์„ธ์š”.

3.1 ์ฃผ์š” ์ž‘์„ฑ ํ•ญ๋ชฉ

  1. ์ž‘์—… ๋ฐฐ๊ฒฝ: ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ ์ด์œ ๋‚˜ ๊ธฐํš ์˜๋„ (์˜ˆ: ์ฟผ๋ฆฌ ์†๋„ ๊ฐœ์„ , SI ์š”์ฒญ ๋ฐ˜์˜ ๋“ฑ)
  2. ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ: ์ฝ”๋“œ ์ˆ˜์ค€์—์„œ์˜ ์ˆ˜์ • ํ•ต์‹ฌ ๋‚ด์—ญ ์š”์•ฝ (์˜ˆ: ์ธ๋ฑ์Šค ์ถ”๊ฐ€, ์กฐ์ธ ๋ฐฉ์‹ ๋ณ€๊ฒฝ ๋“ฑ)
  3. ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ: ์ •์ƒ ์ž‘๋™ ํ™•์ธ ๊ฒฐ๊ณผ (์˜ˆ: ./gradlew build ์„ฑ๊ณต ์—ฌ๋ถ€, ๊ฒฐ๊ณผ ์Šคํฌ๋ฆฐ์ƒท ๋“ฑ)
  4. ๊ด€๋ จ ์ด์Šˆ: ์—ฐ๊ด€๋œ ์ด์Šˆ ๋ฒˆํ˜ธ (์˜ˆ: #123)

3.2 ๋จธ์ง€ ์˜ต์…˜ (Merge Options) ์„ค์ •

MR ์ƒ์„ฑ ํ™”๋ฉด ํ•˜๋‹จ์—์„œ ์•„๋ž˜ ์˜ต์…˜์„ ํ™•์ธํ•ด ์ฃผ์„ธ์š”.

์˜ต์…˜ (Options)์„ค๋ช…ํ•„์ˆ˜ ์—ฌ๋ถ€
Squash commitsโ€ฆ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปค๋ฐ‹์„ ํ•˜๋‚˜์˜ ๊น”๋”ํ•œ ์ปค๋ฐ‹์œผ๋กœ ํ•ฉ์ณ์„œ ๋จธ์ง€ํ•ฉ๋‹ˆ๋‹ค.โœ… ํ•„์ˆ˜
Delete source branchโ€ฆ๋จธ์ง€ ์™„๋ฃŒ ํ›„ ์ž‘์—… ๋ธŒ๋žœ์น˜๋ฅผ ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ์ž๋™ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.โš ๏ธ ๊ถŒ์žฅ

๐Ÿ’ก ์ž‘์„ฑ ํŒ ๋ฐ ์ฃผ์˜์‚ฌํ•ญ

  • ์ฟผ๋ฆฌ ํŠœ๋‹ ์‹œ: ์„ฑ๋Šฅ ๊ฐœ์„  ์ˆ˜์น˜(2.0s -> 0.2s)๋‚˜ ์‹คํ–‰ ๊ณ„ํš(Explain Plan) ๋น„๊ต ๊ฒฐ๊ณผ๋ฅผ ์ฒจ๋ถ€ํ•ด ์ฃผ์„ธ์š”.
  • ์ปค๋ฐ‹ ๊ด€๋ฆฌ: Squash ๋จธ์ง€ ์‹œ, ์ตœ์ข… ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋Š” feat: [๊ฒฐ์ œ] PG์‚ฌ ์—ฐ๋™๊ณผ ๊ฐ™์ด ๋ช…ํ™•ํ•œ ์ œ๋ชฉ์œผ๋กœ ์ˆ˜์ • ๋ฐ”๋ž๋‹ˆ๋‹ค.
  • ์ž‘์—… ์ตœ์†Œํ™”: ๋ฆฌ๋ทฐ ํšจ์œจ์„ ์œ„ํ•ด ์ž‘์—… ๋‹จ์œ„๋Š” ๊ฐ€๊ธ‰์  ์ž‘๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ จ ๋ฌธ์„œ