Skip to content

๐Ÿ“œ ํ˜‘์—… ํ™˜๊ฒฝ

Changuk Woo edited this page Sep 9, 2023 · 3 revisions

๐Ÿฃย Coding Convention

  • ํ•จ์ˆ˜ ํ‘œํ˜„์‹
  • ํŒŒ์ผ ๋„ค์ด๋ฐ: components, pages: ํŒŒ์Šค์นผ ์ผ€์ด์Šค, ๊ทธ์™ธ๋Š” ์นด๋ฉœ ์ผ€์ด์Šค
  • custom hook์€ use๋กœ ์‹œ์ž‘ํ•˜๊ธฐ

์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ž‘์„ฑํ• ๋•Œ๋Š” handle๋กœ ์‹œ์ž‘ํ•˜๊ณ 

function App(){
  const handleClick = ()=>{}
  <button onClick={handleClick}></button>;
}

์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐ›๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋Š” on์œผ๋กœ ์‹œ์ž‘

function App(){
  const doAnything = () =>{}
  <Button onClick={doAnyThing}/>;
}

function Button({onClick}){
  const handleClick = () =>{
    onClick && onClick()
  }
  <button onClick={handleClick}></button>;
}

ํ•œ๋ฒˆ์˜ PR์—์„œ๋Š” ์ตœ๋Œ€ 300์ค„๊นŒ์ง€ ์ฝ”๋“œ ์ž‘์—… ๊ฐ€๋Šฅ ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ ์ „๋žต (์˜๊ฒฌ1)

์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋น„์šฉ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ Pn ๋ฃฐ์„ ์ ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

**(ํ™•์ •) ์ „์—ญ ์ƒ์ˆ˜ ํŒŒ์ผ(index.ts)**์„ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค

โœ…ย Coding Style

์ฝ”๋“œ ๋„ค์ด๋ฐ

  • ์ค„์ž„๋ง์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ’€ ๋„ค์ž„์„ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.
    • ex) btn โŒ button โœ…
  • ์ฃผ์„
    • ์ฃผ์„์€ ์›ฌ๋งŒํ•˜๋ฉด ์‚ฌ์šฉํ•˜์ง€ ๋ง™์‹œ๋‹ค.
    • ์ตœ๋Œ€ํ•œ ์ฝ”๋“œ๋งŒ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑํ•˜๋Š” ๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!
  • ์ƒ์ˆ˜
    • **constants ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  ๋‚ด๋ถ€์— ์ „์—ญ ์ƒ์ˆ˜ ํŒŒ์ผ(index.ts)**์„ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.
    • ๋Œ€๋ฌธ์ž + ์Šค๋„ค์ดํฌ ๋„ค์ด๋ฐ ๋ฐฉ๋ฒ•๋ก ์„ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.
      • ex) TOTAL_DISCOUNT_ACCOUNT = 30000
  • ๋ณ€์ˆ˜: ์นด๋ฉœ์ผ€์ด์Šค. ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.
  • ํ•จ์ˆ˜: ์นด๋ฉœ์ผ€์ด์Šค. ๋™์‚ฌ๋ฅผ ๋งจ ์ฒ˜์Œ์— ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.
    • ex) getValue , getRandomNumber , fetchUsers , onChangeInput , navigateToNextPage
    • ์ตœ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์ด๋ฆ„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”!
      • ๋ช…ํ™•ํ•œ ์ด๋ฆ„์„ ์ง“๊ธฐ ํž˜๋“ค๋‹ค๋ฉด ํ•จ์ˆ˜๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!
  • ํด๋ž˜์Šค: ํŒŒ์Šค์นผ ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.
  • ํƒ€์ž…: ํŒŒ์Šค์นผ ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.
    • type ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํƒ€์ž…์„ ์ •์˜ํ•ฉ์‹œ๋‹ค.(interface X)

      [TS] type๊ณผ interface์˜ ์ฐจ์ด

    • ์žฌ์‚ฌ์šฉํ•  ํƒ€์ž…๋งŒ ๋ถ„๋ฆฌํ•˜์—ฌ ์ „์—ญ์œผ๋กœ ๊ด€๋ฆฌํ•ฉ์‹œ๋‹ค.

      • ์žฌ์‚ฌ์šฉ ์•ˆํ•˜๋Š” ๊ฑด, ๊ฐ ํŒŒ์ผ์˜ ์ตœ์ƒ๋‹จ์— ๋‘ก์‹œ๋‹ค.
  • CSS
    • rem ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํด๋” ๊ตฌ์กฐ

  • ์ผ๋‹จ ํ•„์ˆ˜์ ์ด๋ผ๊ณ  ์ƒ๊ฐ๋˜๋Š” ํด๋”๋“ค๋งŒ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์ถ”ํ›„ ๋‹ค๋ฅธ ํด๋”๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ทธ๋•Œ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!
/src
โ”‚ App.tsx
โ”‚ main.tsx
โ”‚ /api
| /assets
| /components
| /hooks
| /pages
| /types
| /utils

๊ฒฝ๋กœ

vite alias๋กœ src๋Š” @ ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ ํด๋” ์œ„์น˜๋ผ๋ฉด ์ƒ๋Œ€๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ทธ ์™ธ์—๋Š” ์ ˆ๋Œ€๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.

ex)

  • import LoginButton from ./LoginButton
  • import LoginButton from @/Login/LoginButton

๋ธŒ๋žœ์น˜ ๋„ค์ด๋ฐ

ํƒ€์ž…/๊ธฐ๋Šฅ์ด๋ฆ„(์นด๋ฉœ ํ‘œ๊ธฐ๋ฒ•) ์œผ๋กœ ์ž‘์„ฑํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ex)

  • refactor/login-button
  • feature/login-button

ํŒŒ์ผ ๋„ค์ด๋ฐ

components, pages: ํŒŒ์Šค์นผ ์ผ€์ด์Šค

hooks: ์นด๋ฉœ ์ผ€์ด์Šค - use prefix

utils: ์นด๋ฉœ ์ผ€์ด์Šค

api: ์นด๋ฉœ ์ผ€์ด์Šค

types: ์นด๋ฉœ ์ผ€์ด์Šค

develop merge ๋ฐฉ์‹

PR์˜ฌ๋ ธ์„ ๋•Œ 1๋ช… ์ด์ƒ approveํ•ด์•ผ merge ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!

์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐฉ์‹

์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋น„์šฉ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ Pn ๋ฃฐ์„ ์ ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • P1: ๊ผญ ๋ฐ˜์˜ํ•ด์ฃผ์„ธ์š” (Request changes)
    • ๋ฆฌ๋ทฐ์–ด๋Š” PR์˜ ๋‚ด์šฉ์ด ์„œ๋น„์Šค์— ์ค‘๋Œ€ํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ์ž ์žฌํ•˜๊ณ  ์žˆ๋Š” ๋“ฑ ์ค‘๋Œ€ํ•œ ์ฝ”๋“œ ์ˆ˜์ •์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋˜๋Š” ๊ฒฝ์šฐ, P1 ํƒœ๊ทธ๋ฅผ ํ†ตํ•ด ๋ฆฌ๋ทฐ ์š”์ฒญ์ž์—๊ฒŒ ์ˆ˜์ •์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฆฌ๋ทฐ ์š”์ฒญ์ž๋Š” p1 ํƒœ๊ทธ์— ๋Œ€ํ•ด ๋ฆฌ๋ทฐ์–ด์˜ ์š”์ฒญ์„ ๋ฐ˜์˜ํ•˜๊ฑฐ๋‚˜, ๋ฐ˜์˜ํ•  ์ˆ˜ ์—†๋Š” ํ•ฉ๋ฆฌ์ ์ธ ์˜๊ฒฌ์„ ํ†ตํ•ด ๋ฆฌ๋ทฐ์–ด๋ฅผ ์„ค๋“ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • P2: ์ ๊ทน์ ์œผ๋กœ ๊ณ ๋ คํ•ด์ฃผ์„ธ์š” (Request changes)
    • ์ž‘์„ฑ์ž๋Š” P2์— ๋Œ€ํ•ด ์ˆ˜์šฉํ•˜๊ฑฐ๋‚˜ ๋งŒ์•ฝ ์ˆ˜์šฉํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ์ ํ•ฉํ•œ ์˜๊ฒฌ์„ ๋“ค์–ด ํ† ๋ก ํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
  • P3: ์›ฌ๋งŒํ•˜๋ฉด ๋ฐ˜์˜ํ•ด ์ฃผ์„ธ์š” (Comment)
    • ์ž‘์„ฑ์ž๋Š” P3์— ๋Œ€ํ•ด ์ˆ˜์šฉํ•˜๊ฑฐ๋‚˜ ๋งŒ์•ฝ ์ˆ˜์šฉํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ๋ฐ˜์˜ํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ์— ๋ฐ˜์˜ํ•  ๊ณ„ํš์„ ๋ช…์‹œ์ ์œผ๋กœ(JIRA ํ‹ฐ์ผ“ ๋“ฑ์œผ๋กœ) ํ‘œํ˜„ํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
    • Request changes ๊ฐ€ ์•„๋‹Œ Comment ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • P4: ๋ฐ˜์˜ํ•ด๋„ ์ข‹๊ณ  ๋„˜์–ด๊ฐ€๋„ ์ข‹์Šต๋‹ˆ๋‹ค (Approve)
    • ์ž‘์„ฑ์ž๋Š” P4์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋ฌด๋Ÿฐ ์˜๊ฒฌ์„ ๋‹ฌ์ง€ ์•Š๊ณ  ๋ฌด์‹œํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.
    • ํ•ด๋‹น ์˜๊ฒฌ์„ ๋ฐ˜์˜ํ•˜๋Š” ๊ฒŒ ์ข‹์„์ง€ ๊ณ ๋ฏผํ•ด ๋ณด๋Š” ์ •๋„๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
  • P5: ๊ทธ๋ƒฅ ์‚ฌ์†Œํ•œ ์˜๊ฒฌ์ž…๋‹ˆ๋‹ค (Approve)
    • ์ž‘์„ฑ์ž๋Š” P5์— ๋Œ€ํ•ด ์•„๋ฌด๋Ÿฐ ์˜๊ฒฌ์„ ๋‹ฌ์ง€ ์•Š๊ณ  ๋ฌด์‹œํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ๋ฆฌ๋ทฐ in ๋ฑ…ํฌ์ƒ๋Ÿฌ๋“œ ๊ฐœ๋ฐœ ๋ฌธํ™” | ๋ฑ…ํฌ์ƒ๋Ÿฌ๋“œ

<aside> ๐Ÿ“Œ ์ฐธ๊ณ : [GitHub] Git ๋ธŒ๋žœ์น˜์˜ ์ข…๋ฅ˜ ๋ฐ ์‚ฌ์šฉ๋ฒ• (5๊ฐ€์ง€)

</aside>

๐Ÿ’Œย Git Commit Message


Type ๋‚ด์šฉ
feat ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
fix ๋ฒ„๊ทธ ์ˆ˜์ • ๋˜๋Š” typo
refactor ๋ฆฌํŒฉํ† ๋ง
design CSS ๋“ฑ ์‚ฌ์šฉ์ž UI ๋””์ž์ธ ๋ณ€๊ฒฝ
comment ํ•„์š”ํ•œ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ๋ณ€๊ฒฝ
style ์ฝ”๋“œ ํฌ๋งทํŒ…, ์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ, ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์—†๋Š” ๊ฒฝ์šฐ
test ํ…Œ์ŠคํŠธ(ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๋ณ€๊ฒฝ์ด ์—†๋Š” ๊ฒฝ์šฐ)
chore ์œ„์— ๊ฑธ๋ฆฌ์ง€ ์•Š๋Š” ๊ธฐํƒ€ ๋ณ€๊ฒฝ์‚ฌํ•ญ(๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ ์ˆ˜์ •, assets image, ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ๋“ฑ)
init ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ์ƒ์„ฑ
rename ํŒŒ์ผ ํ˜น์€ ํด๋”๋ช… ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์˜ฎ๊ธฐ๋Š” ๊ฒฝ์šฐ
remove ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋Š” ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ
  • ์ปค๋ฐ‹๋ฉ”์‹œ์ง€๋Š” ํ•œ๊ตญ์–ด๋กœ ์ž‘์„ฑ
  • ํƒ€์ž…์€ ์†Œ๋ฌธ์ž๋กœ ์ž‘์„ฑ
  • init์€ ํ”„๋กœ์ ํŠธ ์„ธํŒ… ์‹œ ํ•œ์ •์ ์œผ๋กœ ์‚ฌ์šฉ
  • chore๋Š” ํ”„๋กœ์ ํŠธ ์„ค์ • ๋ณ€๊ฒฝ ์‹œ ์‚ฌ์šฉ
  • ์ž‘์„ฑ ์˜ˆ์‹œ : git commit -m 'feat: ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ"

๐Ÿ‘ฉโ€๐Ÿ’ปย Branch Rules


โœ…ย  ์ž‘์—… ์ง„ํ–‰ ์ˆœ์„œ

์ž‘์—… ์ง„ํ–‰์ˆœ์„œ

  • ๊นƒํ—ˆ๋ธŒ ์ด์Šˆ ์ƒ์„ฑ

    1. new issue ํด๋ฆญ

      แ„‹แ…ตแ„‰แ…ฒ แ„‰แ…ขแ†ผแ„‰แ…ฅแ†ผ - 1.png

    2. ์ด์Šˆ ๋ชฉ์ ์— ๋”ฐ๋ผ ํ…œํ”Œ๋ฆฟ ์„ ํƒ

      แ„‹แ…ตแ„‰แ…ฒ แ„‰แ…ขแ†ผแ„‰แ…ฅแ†ผ 2.png

    3. ์ด์Šˆ ์ž‘์„ฑ

      แ„‹แ…ตแ„‰แ…ฒ แ„‰แ…ขแ†ผแ„‰แ…ฅแ†ผ 6.png

      assigness : ํ•ด๋‹น ์ด์Šˆ๋ฅผ ๋ˆ„๊ฐ€ ๋งก์„์ง€ ์„ ํƒ - ์ƒ์„ฑ์ž โ‰  ์ž‘์—…์ž (๋ชจ๋ฅด๋ฉด ๋น„์›Œ๋†”๋„ ๋Œ)

      label: ํ•ด๋‹น ์ด์Šˆ๊ฐ€ ์–ด๋–ค ์ž‘์—…๊ณผ ๊ด€๋ จ ์žˆ๋Š”๊ฐ€ - ex) feat, fix, refatorโ€ฆ

      project: ์˜คํ”„ํŒ€ ํ”„๋กœ์ ํŠธ ์„ ํƒ

      แ„‹แ…ตแ„‰แ…ฒ แ„‰แ…ขแ†ผแ„‰แ…ฅแ†ผ 4.png

      milestone: ์ด์Šˆ์— ํ•ด๋‹นํ•˜๋Š” ์Šคํ”„๋ฆฐํŠธ ์„ ํƒ (์‰ฝ๊ฒŒ ๋งํ•ด์„œ 1์ฃผ์ฐจ, 2์ฃผ์ฐจ, 3์ฃผ์ฐจ)

      แ„‹แ…ตแ„‰แ…ฒ แ„‰แ…ขแ†ผแ„‰แ…ฅแ†ผ 5.png

    4. submit new issue๋ฅผ ํด๋ฆญํ•ด์„œ ์ด์Šˆ ์ƒ์„ฑ!

  • ๊นƒํ—ˆ๋ธŒ ์ด์Šˆ์—์„œ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ

    1. ์ด์Šˆ ํด๋ฆญ

      แ„‡แ…ณแ„…แ…ขแ†ซแ„Žแ…ต แ„†แ…กแ†ซแ„ƒแ…ณแ†ฏแ„€แ…ต -1 .png

    2. assign, project status ์„ธํŒ… ํ›„ create a branch ํด๋ฆญ

      แ„‡แ…ณแ„…แ…ขแ†ซแ„Žแ…ต แ„†แ…กแ†ซแ„ƒแ…ณแ†ฏแ„€แ…ต - 3.png

    3. ๋ธŒ๋žœ์น˜ ์ด๋ฆ„ ๋ณ€๊ฒฝ

      • +๊ธฐ๋ณธ์ ์œผ๋กœ default branch๋กœ ์„ค์ •ํ•œ develop branch๋ฅผ ๋ถ€๋ชจ๋กœ ๊ฐ€์ง„ ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋จ
      • ๋งŒ์•ฝ main์ด๋‚˜ ๋‹ค๋ฅธ ๋ถ€๋ชจ ๋ธŒ๋žœ์น˜๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑํ•˜๊ณ  ์‹ถ์œผ๋ฉด change branch source ํด๋ฆญํ•ด์„œ ์ˆ˜์ •)

      แ„‡แ…ณแ„…แ…ขแ†ซแ„Žแ…ต แ„†แ…กแ†ซแ„ƒแ…ณแ†ฏแ„€แ…ต - 5.png

    4. ๋ช…๋ น์–ด ํ”„๋กœ์ ํŠธ ํ„ฐ๋ฏธ๋„์— ๋ณต๋ถ™ ํ›„ ์ž‘์—… ์‹œ์ž‘~

      แ„‡แ…ณแ„…แ…ขแ†ซแ„Žแ…ต แ„†แ…กแ†ซแ„ƒแ…ณแ†ฏแ„€แ…ต - 6.png

  • ์ž‘์—… ๋งˆ์นœ ํ›„ PR

    1. pr ์ƒ์„ฑ - ์ง€๊ธˆ์€ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์—†์ง€๋งŒ ๋‚˜์ค‘์—๋Š” ์ƒ๋‹จ์— pr์„ ์ž‘์„ฑํ•˜๋ผ๋Š” ์•Œ๋ฆผ์ด ๋œฐ ๊บผ์ž„! ์ผ๋‹จ์€ new pull request ํด๋ฆญ

      pr 1.png

    2. pr ์ž‘์„ฑ

      1. close ์— ๊ด€๋ จ๋œ ์ด์Šˆ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด PR์ด merge ๋˜๋ฉด์„œ ์ด์Šˆ๋„ ๊ฐ™์ด ๋‹ซํž˜
      2. project status done์œผ๋กœ ๋ณ€๊ฒฝ

      pr 2.png

    3. Merge ํ•  ๋•Œ feature ๋ธŒ๋žœ์น˜๋„ ๊ฐ™์ด ์‚ญ์ œ merge๋Š” ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ ํ• ์ง€ ์•„์ง ์ƒ์˜ ํ•„์š”

Branch ์ „๋žต

git flow ์ „๋žต์„ ์ด์šฉํ•˜๋˜ release branch๋ฅผ ์ œ๊ฑฐํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

แ„ƒแ…กแ„‹แ…ฎแ†ซแ„…แ…ฉแ„ƒแ…ณ.png

๊ฐ ๋ธŒ๋žœ์น˜ ์„ค๋ช…

Main ๋ธŒ๋žœ์น˜

Main ๋ธŒ๋žœ์น˜๋Š”ย ์ถœ์‹œ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ๋ฅผ ๋ชจ์•„๋‘๋Š” ๋ธŒ๋žœ์น˜์ด๋‹ค. Main ๋ธŒ๋žœ์น˜๋Š” ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ์‹œ ์ƒ์„ฑ๋˜๋ฉฐ, ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ์ „๋ฐ˜์— ๊ฑธ์ณ ์œ ์ง€๋œ๋‹ค. ๋ฐฐํฌ๋œ ๊ฐ ๋ฒ„์ „์„ Tag๋ฅผ ์ด์šฉํ•ด ํ‘œ์‹œํ•ด๋‘”๋‹ค.

Develop ๋ธŒ๋žœ์น˜

๋‹ค์Œ ๋ฒ„์ „ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์ฝ”๋“œ๋ฅผ ๋ชจ์•„๋‘๋Š” ๋ธŒ๋žœ์น˜์ด๋‹ค. ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋˜๋ฉด, Main ๋ธŒ๋žœ์น˜๋กœ ๋จธ์ง€๋œ๋‹ค.

Feature ๋ธŒ๋žœ์น˜

ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ๋ธŒ๋žœ์น˜์ด๋‹ค. Develop ๋ธŒ๋žœ์น˜์—์„œ ์ƒ์„ฑํ•˜๋ฉฐ, ๊ธฐ๋Šฅ์ด ๊ฐœ๋ฐœ ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์‹œ Develop ๋ธŒ๋žœ์น˜๋กœ ๋จธ์ง€๋œ๋‹ค. ๋จธ์ง€ํ• ๋•Œ ์ฃผ์˜์ ์€ Fast-Forward๋กœ ๋จธ์ง€ํ•˜์ง€ ์•Š๊ณ , Merge Commit์„ ์ƒ์„ฑํ•˜๋ฉฐ ๋จธ์ง€๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒํ•ด์•ผ ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ํŠน์ • ๊ธฐ๋Šฅ ๋‹จ์œ„๋กœ ๋ฌถ์ด๊ฒŒ ๋œ๋‹ค. - Squash ์–ด๋–จ๊นŒ โ“

Hotfix ๋ธŒ๋žœ์น˜

์ด๋ฏธ ๋ฐฐํฌ๋œ ๋ฒ„์ „์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋ฉด, Hotfix ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. Main ๋ธŒ๋žœ์น˜์—์„œ ์ƒ์„ฑํ•˜๋ฉฐ, ๋ฌธ์ œ ํ•ด๊ฒฐ์ด ์™„๋ฃŒ๋˜๋ฉด Main๊ณผ Develop ๋ธŒ๋žœ์น˜์— ๋‘˜๋‹ค ๋จธ์ง€ํ•œ๋‹ค.

โœ…ย  ๋ธŒ๋žœ์น˜ ๊ณตํ†ต ๊ทœ์น™

  1. develop: ๊ฐœ๋ฐœ์šฉ
  2. main: ๋ฐฐํฌ์šฉ
  3. ์ž‘์—…์€ ๊ฐ์ž ๋ธŒ๋žœ์น˜ ํŒŒ์„œ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค.
    1. main โ† develop โ† feature/๊ธฐ๋Šฅ/์ด์Šˆ๋ฒˆํ˜ธ
    2. main โ† develop โ† refactoring/๊ธฐ๋Šฅ/์ด์Šˆ๋ฒˆํ˜ธ

๐Ÿย Pull Request(PR) Rules


๋…ผ์˜ ํ•  ์ 

  1. ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ ์ „๋žต

    Untitled

    1. Merge

      merge.jpeg

      merge-commit.jpeg

    2. Squash and Merge

      squash.jpeg

      squash commit.jpeg

    3. Rebase and Merge

      rebase.jpeg

      rebase commit.jpeg

    ์ฐธ๊ณ : https://im-developer.tistory.com/182

    ์—ฌ๋Ÿฌ ์˜๊ฒฌ๋“ค

    ์˜๊ฒฌ 1

    feature โ†’ develop ๋จธ์ง€ Squash & Merge๊ฐ€ ์œ ์šฉํ•˜๋‹ค. feature ๋ธŒ๋žœ์น˜์—์„œ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ์ง€์ €๋ถ„ํ•œ ์ปค๋ฐ‹ ๋‚ด์—ญ์„ ํ•˜๋‚˜์˜ ์ปค๋ฐ‹์œผ๋กœ ๋ฌถ์–ด develop ์— ๋ณ‘ํ•ฉํ•˜๋ฉด์„œ, develop์—๋Š” ๊ธฐ๋Šฅ ๋‹จ์œ„๋กœ ์ปค๋ฐ‹์ด ์ถ”๊ฐ€๋˜๋„๋ก ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

    ๋˜ํ•œ feature ๋ธŒ๋žœ์น˜๋Š” develop ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ ํ›„ ์ œ๊ฑฐํ•˜๋ฏ€๋กœ, Merge Commit ์„ ๋‚จ๊ธธ ํ•„์š”๊ฐ€ ์—†๋‹ค.

    +๊ธฐ๋Šฅ ๋ณ„๋กœ ์ปค๋ฐ‹์„ ๋ฌถ๊ธฐ ์œ„ํ•ด์„œ๋Š” merge๋‚˜ squash ์‚ฌ์šฉํ•˜๋„๋ก ๊ถŒ์žฅํ•˜๋Š” ๋“ฏ

    develop โ†’ main ๋จธ์ง€ main ๋ธŒ๋žœ์น˜๋Š” ์ง€๊ธˆ๊นŒ์ง€ ์ž‘์—…ํ•œ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๋ฐฐํฌํ•  ๋•Œ ๋ณ‘ํ•ฉํ•œ๋‹ค. develop ๋ธŒ๋žœ์น˜๋ฅผ squash & merge ํ•˜๊ฒŒ ๋˜๋ฉด ์ปค๋ฐ‹ ์ด๋ ฅ์ด ๋ชจ๋‘ ์‚ฌ๋ผ์ ธ, ํŠน์ • ๊ธฐ๋Šฅ์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ๋กค๋ฐฑํ•  ์ˆ˜ ์—†๊ฒŒ๋œ๋‹ค. main ๋ธŒ๋žœ์น˜ ๋˜ํ•œ Merge Commit ์„ ๋‚จ๊ธธ ํ•„์š” ์—†๋‹ค. ๋”ฐ๋ผ์„œ Rebase & Merge ๊ฐ€ ์ ํ•ฉํ•˜๋‹ค.

    ์˜๊ฒฌ 2

    ํŒ€์ด ์‹ค๋ ฅ์ด ์•„์ง ๋ถ€์กฑํ•˜๋‹ค ๋Š๋ผ๋ฉด, ์ด์ œ ๋ง‰ git์œผ๋กœ ๋ฒ„์ „๊ด€๋ฆฌํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์šฐ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค๋ฉด Squash and Merge๊ฐ€ ์ข‹์„ ๊ฒ๋‹ˆ๋‹ค.

    (์ •๋™ํ™˜) ๊ฐœ์ธ์ ์œผ๋กœ๋Š” ์˜๊ฒฌ 1์ด ๊ดœ์ฐฎ๋‹ค๊ณ  ๋ณด๋Š”๋ฐ 2๋„ ์ƒ๊ด€์—†์Šด๋‹ค

# ๐Ÿฃย Coding Convention

(ํˆฌํ‘œํ•˜๊ณ  ๊ฐ”์œผ๋ฉด ์ข‹๊ฒ ๋Š” ๊ฒƒ) ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ vs ํ•จ์ˆ˜ ํ‘œํ˜„์‹ (๋‘˜ ์ค‘ ์–ด๋–ค๊ฑธ ๋” ์„ ํ˜ธํ•˜์‹œ๋‚˜์š”?)

(ํˆฌํ‘œ ์š”์ฒญ)ํŒŒ์ผ ๋„ค์ด๋ฐ : ์ผ€๋ฐฅ vs (ํŒŒ์Šค์นผ+ ์นด๋ฉœ), ๋งŒ์•ฝ ํŒŒ์Šค์นผ, ์นด๋ฉœ์ด๋ผ๋ฉด ๊ฐ๊ฐ ์–ด๋Š์ƒํ™ฉ์—์„œ ์‚ฌ์šฉํ• ์ง€

components, pages: ํŒŒ์Šค์นผ ์ผ€์ด์Šค

hooks: ์นด๋ฉœ ์ผ€์ด์Šค - use prefix

utils: ๋ฌด์Šจ ์ผ€์ด์Šค? ๊ฐ€ ์ข‹์„๊นŒ์š”

api: ๋ฌด์Šจ ์ผ€์ด์Šค? ๊ฐ€ ์ข‹์„๊นŒ์š”

types: ๋ฌด์Šจ ์ผ€์ด์Šค? ๊ฐ€ ์ข‹์„๊นŒ์š”

camelCase! kebab-case!

(์ œ์•ˆ)

  • ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ž‘์„ฑํ• ๋•Œ๋Š” handle๋กœ ์‹œ์ž‘ํ•˜๊ณ 

    function App(){
    	const handleClick = ()=>{}
    	<button onClick={handleClick}></button>
    }
  • ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐ›๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋Š” on์œผ๋กœ ์‹œ์ž‘ํ•˜๋„๋ก ํ•˜๋Š”๊ฒŒ ์–ด๋–จ๊นŒ์š”

    function App(){
    	const doAnything = () =>{}
    	<Button onClick={doAnyThing}/>
    }
    
    function Button({onClick}){
      const handleClick = () =>{
        onClick && onClick()
    	}
    	<button onClick={handleClick}></button>
    }

(ํ™•์ •) PR ์ฝ”๋“œ์–‘์„ ์–ด๋Š์ •๋„๋กœ ํ• ์ง€๋„ ๊ฒฐ์ •ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. (ex. 300๋ผ์ธ)

(ํ™•์ •) ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ ์ „๋žต (์˜๊ฒฌ1)

(๋…ผ์˜ ์š”์ฒญ) ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋น„์šฉ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ Pn ๋ฃฐ์„ ์ ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

**(ํ™•์ •) ์ „์—ญ ์ƒ์ˆ˜ ํŒŒ์ผ(index.ts)**์„ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค

โœ…ย Coding Style

์ฝ”๋“œ ๋„ค์ด๋ฐ

  • ์ค„์ž„๋ง์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ’€ ๋„ค์ž„์„ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.
    • ex) btn โŒ button โœ…
  • ์ฃผ์„
    • ์ฃผ์„์€ ์›ฌ๋งŒํ•˜๋ฉด ์‚ฌ์šฉํ•˜์ง€ ๋ง™์‹œ๋‹ค.
    • ์ตœ๋Œ€ํ•œ ์ฝ”๋“œ๋งŒ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑํ•˜๋Š” ๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!
  • ์ƒ์ˆ˜
    • **constants ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  ๋‚ด๋ถ€์— ์ „์—ญ ์ƒ์ˆ˜ ํŒŒ์ผ(index.ts)**์„ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.
    • ๋Œ€๋ฌธ์ž + ์Šค๋„ค์ดํฌ ๋„ค์ด๋ฐ ๋ฐฉ๋ฒ•๋ก ์„ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.
      • ex) TOTAL_DISCOUNT_ACCOUNT = 30000
  • ๋ณ€์ˆ˜: ์นด๋ฉœ์ผ€์ด์Šค. ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.
  • ํ•จ์ˆ˜: ์นด๋ฉœ์ผ€์ด์Šค. ๋™์‚ฌ๋ฅผ ๋งจ ์ฒ˜์Œ์— ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.
    • ex) getValue , getRandomNumber , fetchUsers , onChangeInput , navigateToNextPage
    • ์ตœ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์ด๋ฆ„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”!
      • ๋ช…ํ™•ํ•œ ์ด๋ฆ„์„ ์ง“๊ธฐ ํž˜๋“ค๋‹ค๋ฉด ํ•จ์ˆ˜๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!
  • ํด๋ž˜์Šค: ํŒŒ์Šค์นผ ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.
  • ํƒ€์ž…: ํŒŒ์Šค์นผ ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.
  • CSS
    • rem ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํด๋” ๊ตฌ์กฐ

  • ์ผ๋‹จ ํ•„์ˆ˜์ ์ด๋ผ๊ณ  ์ƒ๊ฐ๋˜๋Š” ํด๋”๋“ค๋งŒ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์ถ”ํ›„ ๋‹ค๋ฅธ ํด๋”๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ทธ๋•Œ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!
/src
โ”‚ App.tsx
โ”‚ main.tsx
โ”‚ /api
| /assets
| /components
| /hooks
| /pages
| /types
| /utils

๊ฒฝ๋กœ

vite alias๋กœ src๋Š” @ ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ ํด๋” ์œ„์น˜๋ผ๋ฉด ์ƒ๋Œ€๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ทธ ์™ธ์—๋Š” ์ ˆ๋Œ€๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.

ex)

  • import LoginButton from ./LoginButton
  • import LoginButton from @/Login/LoginButton

๋ธŒ๋žœ์น˜ ๋„ค์ด๋ฐ

ํƒ€์ž…/๊ธฐ๋Šฅ์ด๋ฆ„(์นด๋ฉœ ํ‘œ๊ธฐ๋ฒ•) ์œผ๋กœ ์ž‘์„ฑํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ex)

  • refactor/login-button
  • feature/login-button

ํŒŒ์ผ ๋„ค์ด๋ฐ

components, pages: ํŒŒ์Šค์นผ ์ผ€์ด์Šค

hooks: ์นด๋ฉœ ์ผ€์ด์Šค - use prefix

utils: ์นด๋ฉœ ์ผ€์ด์Šค

api: ์นด๋ฉœ ์ผ€์ด์Šค

types: ์นด๋ฉœ ์ผ€์ด์Šค

develop merge ๋ฐฉ์‹

PR์˜ฌ๋ ธ์„ ๋•Œ 1๋ช… ์ด์ƒ approveํ•ด์•ผ merge ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!

์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐฉ์‹

์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋น„์šฉ์„ ์ค„์ด๊ธฐ ์œ„ํ•œ Pn ๋ฃฐ์„ ์ ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • P1: ๊ผญ ๋ฐ˜์˜ํ•ด์ฃผ์„ธ์š” (Request changes)
    • ๋ฆฌ๋ทฐ์–ด๋Š” PR์˜ ๋‚ด์šฉ์ด ์„œ๋น„์Šค์— ์ค‘๋Œ€ํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ์ž ์žฌํ•˜๊ณ  ์žˆ๋Š” ๋“ฑ ์ค‘๋Œ€ํ•œ ์ฝ”๋“œ ์ˆ˜์ •์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋˜๋Š” ๊ฒฝ์šฐ, P1 ํƒœ๊ทธ๋ฅผ ํ†ตํ•ด ๋ฆฌ๋ทฐ ์š”์ฒญ์ž์—๊ฒŒ ์ˆ˜์ •์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฆฌ๋ทฐ ์š”์ฒญ์ž๋Š” p1 ํƒœ๊ทธ์— ๋Œ€ํ•ด ๋ฆฌ๋ทฐ์–ด์˜ ์š”์ฒญ์„ ๋ฐ˜์˜ํ•˜๊ฑฐ๋‚˜, ๋ฐ˜์˜ํ•  ์ˆ˜ ์—†๋Š” ํ•ฉ๋ฆฌ์ ์ธ ์˜๊ฒฌ์„ ํ†ตํ•ด ๋ฆฌ๋ทฐ์–ด๋ฅผ ์„ค๋“ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • P2: ์ ๊ทน์ ์œผ๋กœ ๊ณ ๋ คํ•ด์ฃผ์„ธ์š” (Request changes)
    • ์ž‘์„ฑ์ž๋Š” P2์— ๋Œ€ํ•ด ์ˆ˜์šฉํ•˜๊ฑฐ๋‚˜ ๋งŒ์•ฝ ์ˆ˜์šฉํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ์ ํ•ฉํ•œ ์˜๊ฒฌ์„ ๋“ค์–ด ํ† ๋ก ํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
  • P3: ์›ฌ๋งŒํ•˜๋ฉด ๋ฐ˜์˜ํ•ด ์ฃผ์„ธ์š” (Comment)
    • ์ž‘์„ฑ์ž๋Š” P3์— ๋Œ€ํ•ด ์ˆ˜์šฉํ•˜๊ฑฐ๋‚˜ ๋งŒ์•ฝ ์ˆ˜์šฉํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ๋ฐ˜์˜ํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ์— ๋ฐ˜์˜ํ•  ๊ณ„ํš์„ ๋ช…์‹œ์ ์œผ๋กœ(JIRA ํ‹ฐ์ผ“ ๋“ฑ์œผ๋กœ) ํ‘œํ˜„ํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
    • Request changes ๊ฐ€ ์•„๋‹Œ Comment ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • P4: ๋ฐ˜์˜ํ•ด๋„ ์ข‹๊ณ  ๋„˜์–ด๊ฐ€๋„ ์ข‹์Šต๋‹ˆ๋‹ค (Approve)
    • ์ž‘์„ฑ์ž๋Š” P4์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋ฌด๋Ÿฐ ์˜๊ฒฌ์„ ๋‹ฌ์ง€ ์•Š๊ณ  ๋ฌด์‹œํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.
    • ํ•ด๋‹น ์˜๊ฒฌ์„ ๋ฐ˜์˜ํ•˜๋Š” ๊ฒŒ ์ข‹์„์ง€ ๊ณ ๋ฏผํ•ด ๋ณด๋Š” ์ •๋„๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
  • P5: ๊ทธ๋ƒฅ ์‚ฌ์†Œํ•œ ์˜๊ฒฌ์ž…๋‹ˆ๋‹ค (Approve)
    • ์ž‘์„ฑ์ž๋Š” P5์— ๋Œ€ํ•ด ์•„๋ฌด๋Ÿฐ ์˜๊ฒฌ์„ ๋‹ฌ์ง€ ์•Š๊ณ  ๋ฌด์‹œํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

[์ฝ”๋“œ ๋ฆฌ๋ทฐ in ๋ฑ…ํฌ์ƒ๋Ÿฌ๋“œ ๊ฐœ๋ฐœ ๋ฌธํ™” | ๋ฑ…ํฌ์ƒ๋Ÿฌ๋“œ](https://blog.banksalad.com/tech/banksalad-code-review-culture/)

๐Ÿ“Œ ์ฐธ๊ณ : **[[[GitHub] Git ๋ธŒ๋žœ์น˜์˜ ์ข…๋ฅ˜ ๋ฐ ์‚ฌ์šฉ๋ฒ• (5๊ฐ€์ง€)](https://gmlwjd9405.github.io/2018/05/11/types-of-git-branch.html)](https://gmlwjd9405.github.io/2018/05/11/types-of-git-branch.html)**