๐Ÿค ํŒ€์„ ์œ„ํ•œ ๊นƒ&๊นƒํ—ˆ๋ธŒ

khakiDยท2022๋…„ 6์›” 26์ผ
0
post-thumbnail

๐Ÿ‘ฅ ํ˜‘์—…์„ ์œ„ํ•œ ๊นƒํ—ˆ๋ธŒ ๊ธฐ๋Šฅ

  • ํŒ€ ๋‹จ์œ„ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ๊นƒํ—ˆ๋ธŒ์˜ Issues์™€ Projects ํ™œ์šฉ
  • ์ €์žฅ์†Œ ํ˜‘์—…์ž ๋“ฑ๋ก โ†’ ์ด์Šˆ ๋ผ๋ฒจ โ†’ ์ด์Šˆ โ†’ ํ”„๋กœ์ ํŠธ ๋ณด๋“œ โ†’ ์ด์Šˆ & ํ”„๋กœ์ ํŠธ ๋ณด๋“œ

โœ… ์ด์Šˆ (Issues)

  • ํ”„๋กœ์ ํŠธ ์ž‘์—…, ๊ฐœ์„  ์‚ฌํ•ญ, ์˜ค๋ฅ˜ ์ถ”์  ๊ธฐ๋Šฅ์„ ์ œ๊ณต
  • ๊ฐ ์ €์žฅ์†Œ๋งˆ๋‹ค ์ด์Šˆ ๋‹จ์œ„๋กœ ์ž‘์„ฑํ•˜๊ณ  ๊ด€๋ฆฌ
    ๋ผ๋ฒจ (Labels)
    • ์ด์Šˆ์˜ ์„ฑ๊ฒฉ์„ ๊ตฌ๋ถ„์ง“๋Š” ๋„๊ตฌ
    • Label name์— ์›ํ•˜๋Š” ๋ผ๋ฒจ ์ด๋ฆ„, Description์— ์„ค๋ช…, Color์— ์ƒ‰์ƒ์„ ์ง€์ •
    • ๊นƒํ—ˆ๋ธŒ์—์„œ๋Š” ์ด์Šˆ์˜ ์„ฑ๊ฒฉ์— ๋งž๊ฒŒ ํ…œํ”Œ๋ฆฟ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. (Issues & PR Templates)

      • Title : ์ด์Šˆ์˜ ์ œ๋ชฉ
      • Write : ์ƒ์„ธ ์ด์Šˆ๋ฅผ ์ ๋Š” ๊ณณ
      • Assigness : ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•  ์‚ฌ๋žŒ์„ ์ง€์ •
      • Labels : ์ด์Šˆ์˜ ์ข…๋ฅ˜
      • Projects : ์ด์Šˆ๊ฐ€ ํฌํ•จ๋  ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒ
      • Milestone : ์ด์Šˆ๊ฐ€ ํฌํ•จ๋  ๋งˆ์ผ์Šคํ†ค์„ ์„ ํƒ
      • ๊นƒํ—ˆ๋ธŒ์—์„œ๋Š” ์ด์Šˆ์˜ ์„ฑ๊ฒฉ์— ๋งž๊ฒŒ ํ…œํ”Œ๋ฆฟ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. (Issues & PR templates)

โœ… ํ”„๋กœ์ ํŠธ (Projects)

  • ์ž‘์—… ๋ฐ ์šฐ์„ ์ˆœ์œ„ ๊ด€๋ฆฌ๋ฅผ ๋•๋Š” ๋„๊ตฌ๋‹ค. ํ˜„์žฌ ์ง„ํ–‰์ค‘์ธ ํ”„๋กœ์ ํŠธ์˜ ์„ฑ๊ฒฉ์— ๋งž๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ํ”„๋กœ์ ํŠธ ๋ณด๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • ์ฑ…์—๋Š” ๋‚˜์˜ค์ง€ ์•Š์•˜์œผ๋‚˜, ๊นƒํ—ˆ๋ธŒ์—์„œ ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ Projects Beta๊ฐ€ ๋‚˜์™”๋‹ค.
  • ์—ฌ๊ธฐ์„œ๋Š” ์ผ๋‹จ Projects Classic์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณธ๋‹ค.

    • Sort tasks : ํ”„๋กœ์ ํŠธ ๋ณด๋“œ์— ์ด์Šˆ ๋ฐ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Plan your project : ์ž‘์—… ์ƒํƒœ๋ณ„๋กœ ์—ด์„ ์ƒ์„ฑํ•˜๊ณ , ์ž‘์—…์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Automate your workflow : ์ด๋ฒคํŠธ๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ž‘์—…์˜ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Track progress : ํ”„๋กœ์ ํŠธ ๋ณด๋“œ์—์„œ ์ผ์–ด๋‚œ ๋ชจ๋“  ์ผ์„ ์ถ”์ ํ•˜๊ณ  ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Share status : ํ”„๋กœ์ ํŠธ ๋ณด๋“œ์˜ ์ž‘์—… ๋‹จ์œ„์ธ โ€˜์นด๋“œโ€™๋Š” ๊ณ ์œ  URL์„ ๊ฐ€์ ธ, ๋‹ค๋ฅธ ํŒ€์›๋“ค์—๊ฒŒ ๊ณต์œ ํ•˜๊ณ  ๋…ผ์˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
    • Wrap up : ํŠน์ • ํ”„๋กœ์ ํŠธ ๋ณด๋“œ์˜ ๋ชจ๋“  ์ž‘์—…์„ ๋งˆ๋ฌด๋ฆฌํ•œ ํ›„ ํ™œ์„ฑ ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก์—์„œ ์ œ๊ฑฐํ•˜์—ฌ ๋‹ค์Œ ํ”„๋กœ์ ํŠธ ๋ณด๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ ๋ณด๋“œ์˜ ํ…œํ”Œ๋ฆฟ (๊นƒํ—ˆ๋ธŒ ์ œ๊ณต ๊ธฐ๋ณธ ํ…œํ”Œ๋ฆฟ 5๊ฐ€์ง€)
    • None : ๋นˆ ํ…œํ”Œ๋ฆฟ (์ž‘์—… ์ƒํƒœ์—ด ๋ฐ ์„ค์ • ์ •๋ณด๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ง์ ‘ ๊ตฌ์„ฑ)
    • Basic kanban : To do, In progress, Done ์ž‘์—… ์ƒํƒœ์—ด์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒ์„ฑ
    • Automated kanban : Basic kanban ๋ณด๋“œ์™€ ๋™์ผํ•˜๊ฒŒ To do, In progress, Done ์ž‘์—… ์ƒํƒœ์—ด์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค. ์ถ”๊ฐ€๋กœ ์นด๋“œ์˜ ์ž‘์—… ์ƒํƒœ๊ฐ€ ํ”„๋กœ์ ํŠธ์— ํฌํ•จ๋œ ์ด์Šˆ์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค.
    • Automated kanban with reviews : Automated kanban ๋ณด๋“œ์™€ ๋™์ผํ•˜์ง€๋งŒ ์ž‘์—… ์ƒํƒœ ๋ณ€๊ฒฝ ์š”์†Œ์— ํ’€ ๋ฆฌํ€˜์ŠคํŠธ์˜ ์ƒํƒœ๊ฐ€ ์ถ”๊ฐ€๋กœ ๋ฐ˜์˜๋œ๋‹ค.
    • Bug triage : ๋ฒ„๊ทธ๋ฅผ ๋ถ„๋ฅ˜ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—… ์ƒํƒœ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.
  • ์ด์Šˆ์™€ ํ”„๋กœ์ ํŠธ ๋ณด๋“œ
    • ํ”„๋กœ์ ํŠธ์— ์ด์Šˆ ์‚ฌ์šฉํ•˜๊ธฐ
      • ์ด์Šˆ ์„ค์ •์˜ ํ”„๋กœ์ ํŠธ์— ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ฅผ ์ง€์ •ํ•ด์ค€๋‹ค.
      • ํ”„๋กœ์ ํŠธ์— Add cards ํƒญ์—์„œ ์ด์Šˆ๋ฅผ ๊ฐ ์ƒํƒœ์— ๋“œ๋ž˜๊ทธํ•ด์ค€๋‹ค.
      • ์ž‘์—…์„ ์™„๋ฃŒํ•˜๋ฉด Done ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ , ์ด์Šˆ๋ฅผ Close ํ•ด์ค€๋‹ค.



๐Ÿ‘ฅ ํ˜‘์—…์„ ์œ„ํ•œ ๊นƒ ๋ช…๋ น์–ด

  • ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ์—ฌ๋Ÿฌ ๋ช…์ด ํ˜‘์—…ํ•  ๋•Œ ํ•„์š”ํ•œ ๊นƒ ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ•์„ ๋‹ค๋ฃฌ๋‹ค.
  • ๊ฐ์ž ๋งก์€ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์ „ ํ•„์š”ํ•œ ์ž‘์—… ๋ฐฉ๋ฒ•๊ณผ ๊ฐœ๋ฐœ ์™„๋ฃŒ ํ›„, ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋งŒ๋“  ๊ธฐ๋Šฅ์„ ๋ณ‘ํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃฌ๋‹ค.
  • ์—ฌ๊ธฐ์„œ ์–ธ๊ธ‰๋˜๋Š” โ€˜mainโ€™ ๋ธŒ๋žœ์น˜๋Š” ํ˜„์žฌ โ€˜masterโ€™ ๋ธŒ๋žœ์น˜๋กœ rename ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์œ ์˜

โœ… ๋ธŒ๋žœ์น˜ (branch)

  • ํ”„๋กœ์ ํŠธ ๊ธฐ์ค€ ์ฝ”๋“œ์ธ main ๋ธŒ๋žœ์น˜๋กœ๋ถ€ํ„ฐ ๋…๋ฆฝ์ ์ธ ์ž‘์—… ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ธฐ๋Šฅ
  • ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฒ„์ „์˜ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ๋•Œ, ์„œ๋กœ์˜ ์ž‘์—…์— ์˜ํ–ฅ์„ ์ฃผ๊ณ ๋ฐ›์ง€ ์•Š๊ธฐ ์œ„ํ•ด ํ•„์š”
  • ๋ณ„๋„์˜ ์ƒ์„ฑ ์—†์ด๋„ main ๋ธŒ๋žœ์น˜๋Š” ๊ธฐ์ค€์ด ๋˜๋Š” ๋ธŒ๋žœ์น˜๋กœ ์ž๋™ ์ƒ์„ฑ๋œ๋‹ค.

    • ์ปค๋ฐ‹๊ณผ main ๋ธŒ๋žœ์น˜๋Š” ์ปค๋ฐ‹3์„ ๋ฐ”๋ผ๋ณด๊ณ , ์ปค๋ฐ‹ ๋‚ด์—ญ์—๋Š” 1,2,3๊ฐ€ ํฌํ•จ๋œ๋‹ค.
    • ์ปค๋ฐ‹ ์ฒดํฌ์„ฌ์€ ์ปค๋ฐ‹์„ ์‹๋ณ„ํ•˜๋Š” ๊ณ ์œ  ๋ฐ์ดํ„ฐ์ด๋‹ค. (์•„๋ž˜ ๊ทธ๋ฆผ์—์„œ์˜ 16์ง„์ˆ˜)
    • ์ปค๋ฐ‹๊ณผ ๋ธŒ๋žœ์น˜์˜ ์ƒํƒœ๋ฅผ ๋„์‹ํ™”ํ•˜๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™๋‹ค.

    • main ๋ธŒ๋žœ์น˜๋Š” ๊ฒฐ๊ตญ ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ƒ์„ฑ๋œ ์ปค๋ฐ‹์„ ๋ฐ”๋ผ๋ณด๊ฒŒ ๋œ๋‹ค.
    • HEAD ํฌ์ธํ„ฐ๋Š” ํ˜„์žฌ ์ž‘์—…ํ•˜๋Š” ๊ณณ(๋ธŒ๋žœ์น˜)์˜ ์ตœ์ข… ์ปค๋ฐ‹์„ ๋ฐ”๋ผ๋ณธ๋‹ค.
    • ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์˜ HEAD ํฌ์ธํ„ฐ๋Š” main ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—… ์ค‘์ด๋ฉฐ, main ๋ธŒ๋žœ์น˜๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ ์ปค๋ฐ‹์„ ๋ฐ”๋ผ๋ณธ๋‹ค.

๋ธŒ๋žœ์น˜ ์ƒ์„ฑํ•˜๊ธฐ

  1. ๊นƒํ—ˆ๋ธŒ ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ์ƒ์„ฑ ํ›„, ๋กœ์ปฌ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ• (์›๊ฒฉ โ†’ ๋กœ์ปฌ)
    • ๊นƒํ—ˆ๋ธŒ์—์„œ test/remote-branch ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค


    • git remote update ๋ช…๋ น์–ด๋กœ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

    • git branch -a ๋ช…๋ น์–ด๋กœ ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ์ •๋ณด ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. (*์€ ํ˜„์žฌ ์ž‘์—…์ค‘์ธ ๋ธŒ๋žœ์น˜)

      branch ์˜ต์…˜์„ค๋ช…์‹คํ–‰ ์˜ˆ์‹œ
      -a์ง€์—ญ ์ €์žฅ์†Œ์™€ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜ ์ •๋ณด๋ฅผ ํ•จ๊ป˜ ๋ณด์—ฌ์ค€๋‹ค.git branch -a
      -d๋ธŒ๋žœ์น˜ ์‚ญ์ œgit branch -d <๋ธŒ๋žœ์น˜๋ช…>
      -l์ง€์—ญ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋ฉฐ git branch ๋ช…๋ น์–ด๋งŒ ์‹คํ–‰ํ•ด๋„ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.git branch -l
      -r์›๊ฒฉ ์ €์žฅ์†Œ ๋ธŒ๋žœ์น˜ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.git branch -r
      -v์ง€์—ญ ์ €์žฅ์†Œ ๋ธŒ๋žœ์น˜ ์ •๋ณด๋ฅผ ์ตœ์‹  ์ปค๋ฐ‹ ๋‚ด์—ญ๊ณผ ํ•จ๊ป˜ ๋ณด์—ฌ์ค€๋‹ค.git branch -v

    • git checkout ๋ช…๋ น์–ด๋กœ ์›๊ฒฉ์—์„œ ๋กœ์ปฌ์˜ ์ž‘์—… ๋ธŒ๋žœ์น˜๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
      checkout ์˜ต์…˜์„ค๋ช…์‹คํ–‰ ์˜ˆ์‹œ
      ์‚ฌ์šฉํ•  ๋ธŒ๋žœ์น˜๋ฅผ ์ง€์ •ํ•œ๋‹ค.git checkout
      -b๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•  ๋ธŒ๋žœ์น˜๋กœ ์ง€์ •ํ•œ๋‹ค.git checkout -b <๋ธŒ๋žœ์น˜๋ช…>
      -t์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ์ƒ์„ฑํ•œ ๋ธŒ๋žœ์น˜๋ฅผ ์ง€์—ญ ์ €์žฅ์†Œ์—์„œ ์‚ฌ์šฉํ•  ๋ธŒ๋žœ์น˜๋กœ ์ง€์ •ํ•œ๋‹คgit checkout -t <๋ธŒ๋žœ์น˜๋ช…>

  1. ๋กœ์ปฌ์—์„œ ์ƒ์„ฑ ํ›„, ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋ฐ˜์˜ํ•˜๋Š” ๋ฐฉ๋ฒ• (๋กœ์ปฌ โ†’ ์›๊ฒฉ)
    • git branch ๋ช…๋ น์–ด๋กœ ํ˜„์žฌ ์ž‘์—… ์ค‘์ธ ๋ธŒ๋žœ์น˜๋ฅผ ํ™•์ธํ•œ๋‹ค. (-l ์˜ต์…˜ ์ƒ๋žต)

    • git checkout master ๋ช…๋ น์–ด๋กœ ์ž‘์—… ๋ธŒ๋žœ์น˜๋ฅผ master(main)์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.

    • git checkout {์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ช…} ๋ช…๋ น์–ด๋กœ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

    • git branch -a ๋ช…๋ น์–ด๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ํ™•์ธํ•œ๋‹ค.

    • git checkout ๋ช…๋ น์–ด๋กœ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ์ž‘์—… ๋ธŒ๋žœ์น˜๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.

    • ๋กœ์ปฌ์—์„œ ์ƒ์„ฑํ•œ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋ฐ˜์˜ํ•œ๋‹ค. git push {origin} {branch-name}


๋ธŒ๋žœ์น˜ ์‚ญ์ œํ•˜๊ธฐ

  • ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•
    git branch -d {branch-name}

  • ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•
    git push {origin} -d {branch-name}

๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉํ•˜๊ธฐ

  • ์ƒˆ๋กœ์šด ์ž‘์—… ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹ ๋‚ด์—ญ์„ ๊ธฐ์ค€ ๋ธŒ๋žœ์น˜์— ๋ฐ˜์˜ํ•˜๋Š” ์ž‘์—…์ด๋‹ค.
  • ๊ธฐ์ค€ ๋ธŒ๋žœ์น˜(main, master)๋กœ ์ž‘์—… ์˜์—ญ์„ ๋ณ€๊ฒฝํ•œ ๋’ค์— ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • test/local-branch์—์„œ ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์„ ์ƒ์„ฑํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.
  • ํ•ด๋‹น ์ปค๋ฐ‹์„ ๊ธฐ์ค€ ๋ธŒ๋žœ์น˜์— ๋ฐ˜์˜ํ•˜๋Š” ๋จธ์ง€ ์ปค๋ฐ‹(merge commit)์ด ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ์ด๋‹ค.
  • ๋ณ‘ํ•ฉ์˜ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•

    1. ๋นจ๋ฆฌ๊ฐ๊ธฐ ๋ณ‘ํ•ฉ : fast forward

      • ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋Š” ๊ธฐ์ค€ ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—… ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. ์ดํ›„ ๋ณ‘ํ•ฉ์„ ์‹œ๋„ํ•  ๋•Œ, ๊ธฐ์ค€ ๋ธŒ๋žœ์น˜์— ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์ด ์—†๋‹ค๋ฉด ํŒจ์ŠคํŠธํฌ์›Œ๋“œ ๋ณ‘ํ•ฉ์ด ์ง„ํ–‰๋œ๋‹ค.
      • ์ž‘์—… ๋ธŒ๋žœ์น˜์˜ ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์ด ๋‹จ์ˆœํžˆ ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ๋”ํ•ด์ง€๊ณ , ๊ธฐ์ค€ ๋ธŒ๋žœ์น˜๊ฐ€ ๋ฐ”๋ผ๋ณด๋Š” ์ตœ์‹  ์ปค๋ฐ‹๋งŒ ๋ณ€๊ฒฝ๋œ๋‹ค.
      • git merge {branch-name} Fast-forward ๋ฐฉ์‹์œผ๋กœ ๋ณ‘ํ•ฉ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
      • ์ด์ œ ๊ธฐ์ค€ ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹ ๋‚ด์—ญ์„ ๋ณด๋ฉด ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์ด ์ถ”๊ฐ€๋˜๊ณ , ๊ธฐ์ค€ ๋ธŒ๋žœ์น˜์™€ ์ž‘์—… ๋ธŒ๋žœ์น˜๊ฐ€ ๊ฐ™์€ ์ปค๋ฐ‹์„ ๋ฐ”๋ผ๋ณด๊ฒŒ ๋œ๋‹ค.
    2. ๋ณ‘ํ•ฉ์ปค๋ฐ‹ ์ƒ์„ฑ : merge commit

      • ์œ„์˜ ๋นจ๋ฆฌ๊ฐ๊ธฐ ๋ณ‘ํ•ฉ์œผ๋กœ ๊ธฐ์ค€ ๋ธŒ๋žœ์น˜์— ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์ด ์ถ”๊ฐ€๋œ ์ƒํƒœ๋‹ค.
      • ์ด ์ƒํƒœ์—์„œ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋กœ ๊ฐ€ ์ž‘์—…์„ ์™„๋ฃŒํ•œ ํ›„ ์ปค๋ฐ‹ํ•œ๋‹ค.
      • ๋‹ค์‹œ ๊ธฐ์ค€ ๋ธŒ๋žœ์น˜๋กœ ์™€ git merge {branch-name} ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณ‘ํ•ฉํ•œ๋‹ค.
        • Fast-forward๊ฐ€ ์•„๋‹Œ Auto-merging ์ด๋ผ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.
      • ๋‹ค์‹œ ์ปค๋ฐ‹ ๋‚ด์—ญ์„ ์‚ดํŽด ๋ณธ๋‹ค.

        • test/fast-forward ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—… ํ›„ master ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ๋œ ์ปค๋ฐ‹๊ณผ, test/local-branch ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—… ํ›„ master ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ๋œ ์ปค๋ฐ‹์ด ํ•˜๋‚˜์˜ ๋ณ‘ํ•ฉ ์ปค๋ฐ‹์œผ๋กœ ๋ฌถ์—ฌ ์ƒ์„ฑ๋˜์—ˆ๋‹ค.

โœ… ์ถฉ๋Œ(Conflict) ํ•ด๊ฒฐ

  • ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋ฉด ๋ณ‘ํ•ฉ ์‹œ์— ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ถฉ๋Œ์ด๋ž€ ๊นƒ์ด ์ž๋™์œผ๋กœ ๋ณ‘ํ•ฉ์„ ์™„๋ฃŒํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์„ ๋งํ•œ๋‹ค.
  • ๊นƒ ์ž…์žฅ์—์„œ ๋‘ ๋ธŒ๋žœ์น˜๊ฐ€ ๊ฐ™์€ ํŒŒ์ผ์˜ ๋™์ผ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค๋ฉด, ์–ด๋–ค ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์ตœ์ข…์ ์œผ๋กœ ๋ฐ˜์˜ํ•ด์•ผ ํ•˜๋Š” ์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค.
  • ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ์ƒํ™ฉ : CONFLICT
  • ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ํŒŒ์ผ : index.html
  • ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ๋ถ€๋ถ„์„ ์•Œ๋ ค์ค€๋‹ค. (VS Code)
    • ๊ตฌ๋ถ„ ๊ธฐํ˜ธ (===) ์œ— ๊ตฌ๊ฐ„(HEAD)์€ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์ด๋‹ค.
    • ์•„๋žซ ๊ตฌ๊ฐ„(test/remote-branch)์€ ๋ณ‘ํ•ฉํ•˜๋ ค๋Š” ๋ธŒ๋žœ์น˜์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์ด๋‹ค.
    • ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ตœ์ข…์ ์œผ๋กœ ๋ฐ˜์˜ํ•  ๋‚ด์šฉ๋งŒ ๋‚จ๊ธฐ๊ณ  ์ถฉ๋Œ์„ ์•Œ๋ ค์ฃผ๋Š” ๊ตฌ๋ฌธ์„ ์ œ๊ฑฐํ•ด์ค€๋‹ค.
    • ์ปค๋ฐ‹ํ•˜๊ณ  ์ถฉ๋Œ์ด ํ•ด๊ฒฐ๋˜์–ด ๋ณ‘ํ•ฉ๋˜์—ˆ๋Š”์ง€ ์ปค๋ฐ‹ ๋‚ด์—ญ์„ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.
    • ์ถฉ๋Œ์ด ํ•ด๊ฒฐํ•œ ํ›„ ์ƒ์„ฑํ•œ ์ปค๋ฐ‹(Resolve conflicts)์ด master ๋ธŒ๋žœ์น˜๊ฐ€ ๋ฐ”๋ผ๋ณด๋Š” ๊ฐ€์žฅ ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์ž˜ ์ƒ์„ฑ๋œ๋‹ค.

โœ… ํ’€ ๋ฆฌํ€˜์ŠคํŠธ(Pull Request)

  • ๋ณ‘ํ•ฉ์„ ํ•˜๊ธฐ ์ „, ์ž‘์—… ๋ธŒ๋žœ์น˜์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋™๋ฃŒ๋“ค์—๊ฒŒ ๊ณต์œ ํ•˜๊ณ  ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›๋Š” ๊ณผ์ •
  • ํ•จ๊ป˜ ์ž‘์—…ํ•˜๋Š” ๋™๋ฃŒ๋“ค์—๊ฒŒ ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ ์˜ˆ์ •์ธ ๋ณ€๊ฒฝ ๋‚ด์—ญ ๊ฒ€ํ† ๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒƒ
  • ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ์š”์ฒญํ•˜๊ธฐ
    • ์‹ค์Šต์„ ์œ„ํ•ด ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•œ ํ›„, ์ž‘์—… ๋ธŒ๋žœ์น˜๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
    • ์ž‘์—…์„ ์™„๋ฃŒํ•˜๊ณ  ์ปค๋ฐ‹, ํ‘ธ์‰ฌํ•œ๋‹ค.
    • ๊นƒ ํ—ˆ๋ธŒ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ฉ”์ธ ํŽ˜์ด์ง€์—์„œ ๋ธŒ๋žœ์น˜๊ฐ€ ๋ฐ˜์˜๋˜์—ˆ๋‚˜ ํ™•์ธํ•œ๋‹ค.
    • [Pull requests] ํƒญ โ†’ [New pull reqeusts] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.
    • (1)์€ ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ๋ณ‘ํ•ฉํ•  ๋ธŒ๋žœ์น˜, (2)๋Š” ๋ณ€๊ฒฝ ๋‚ด์—ญ์ด ์žˆ๋Š” ์ž‘์—… ๋ธŒ๋žœ์น˜๋ฅผ ์„ ํƒํ•˜๊ณ , Create ํ•œ๋‹ค.
    • ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ๋‚ด์šฉ์„ ์ ๋Š” ํ™”๋ฉด์œผ๋กœ, (1)์ œ๋ชฉ, (2)์„ค๋ช…, (3)๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๊ฒ€ํ† ํ•  Reviewers ์ง€์ •
    • Reviewers๋กœ ์ง€์ •๋œ ์‚ฌ๋žŒ์€ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๊ฒ€ํ† ํ•œ ํ›„, ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ๊ฒŒ ๋œ๋‹ค.
      โš ๏ธ ๊ตณ์ด Reviewers๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ๋ณ‘ํ•ฉ์€ ๊ฐ€๋Šฅํ•˜๋‹ค.
      ํ•˜์ง€๋งŒ ๋™๋ฃŒ๋“ค์˜ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ธฐ ์œ„ํ•ด ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ฏ€๋กœ, ์ง€์ •ํ•˜์—ฌ ๋™๋ฃŒ๋“ค์˜ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ณ  ๋ณ‘ํ•ฉํ•˜๋„๋ก ํ•˜์ž.

  • ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ๊ฒ€ํ† ํ•˜๊ธฐ
    • Reviewers๋กœ ์ง€์ •๋œ ๊ณ„์ •์ด ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ์ƒ์„ธ ํŽ˜์ด์ง€์˜ [File changed] ํƒญ์—์„œ ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ํŒŒ์ผ ๊ธฐ์ค€์œผ๋กœ ํ™•์ธํ•˜๊ณ , [+] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ๊ฐ ๋ณ€๊ฒฝ ๋‚ด์—ญ์— ๋Œ€ํ•œ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
    • [Review changes] ๋ฒ„ํŠผ์„ ํด๋ฆญ โ†’ ํŒ์—… ์ฐฝ์—์„œ ์ฝ”๋ฉ˜ํŠธ ์ž‘์„ฑ โ†’ [Approve] ์„ ํƒ โ†’ [Submit review] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ํ•ด๋‹น PR์„ ์Šน์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

      ๋ฆฌ๋ทฐ์–ด๊ฐ€ ๋”ฐ๋กœ ์ง€์ •๋˜์ง€ ์•Š์•„ Approve๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ๋Š” ๋ฐ”๋กœ merge ๊ฐ€๋Šฅ
    • [Merge pull request] ๋ฒ„ํŠผ์„ ํ†ตํ•ด ๋ณ‘ํ•ฉ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ฝ”๋ฉ˜ํŠธ ๋“ฑ์„ ํ™•์ธํ•˜๊ณ  [Confirm merge] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ๋ณ‘ํ•ฉ ์ž‘์—…์„ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋ณ‘ํ•ฉ์ด ์™„๋ฃŒ๋˜๋ฉด PR์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋ณ‘ํ•ฉ๋˜์—ˆ๊ณ , ์ข…๋ฃŒ(Closed)๋œ๋‹ค.

  • ๋กœ์ปฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๋ธŒ๋žœ์น˜ ๋‚ด์—ญ ๋ฐ˜์˜ํ•˜๊ธฐ
    • ๋กœ์ปฌ์˜ ๊ธฐ์ค€ ๋ธŒ๋žœ์น˜(master)๋ฅผ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๊ธฐ์ค€ ๋ธŒ๋žœ์น˜์™€ ๋™๊ธฐํ™”ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
    • ๋ฐฉ๋ฒ•1. git pull
      • git checkout master โ†’ git pull {@} {์›๊ฒฉ ์ €์žฅ์†Œ ๋ธŒ๋žœ์น˜}
    • ๋ฐฉ๋ฒ•2. git fetch
      • git fetch {@} {branch} ๋Š” ๋ณ€๊ฒฝ ๋‚ด์—ญ๋งŒ ๊ฐ€์ ธ์˜ค๊ณ , ๋กœ์ปฌ์— ๋ณ‘ํ•ฉ ์ž‘์—…์€ ํ•˜์ง€ ์•Š๋Š”๋‹ค.
      • ์ฆ‰, git fetch ํ›„์—๋Š” ์ง์ ‘ git merge๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ํ˜„์žฌ ์ž‘์—… ๋ธŒ๋žœ์น˜์— ๋ฐ˜์˜ํ•ด์•ผ ํ•œ๋‹ค.

์ƒˆ๋กœ๋ฐฐ์šด ๋ช…๋ น์–ด ์ •๋ฆฌ

๋ช…๋ น์–ด๊ธฐ๋Šฅ๋ช…๋ น ํ˜•์‹
git branch๋ธŒ๋žœ์น˜ ํ™•์ธgit branch -a
-๋ธŒ๋žœ์น˜ ์ƒ์„ฑgit branch {์ƒ์„ฑํ•  ๋ธŒ๋žœ์น˜๋ช…}
-๋ธŒ๋žœ์น˜ ์ œ๊ฑฐgit branch -d {์‚ญ์ œํ•  ๋ธŒ๋žœ์น˜๋ช…}
git checkout์ž‘์—… ๋ธŒ๋žœ์น˜ ๋ณ€๊ฒฝgit checkout {๋ณ€๊ฒฝํ•  ๋ธŒ๋žœ์น˜๋ช…}
git merge๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉgit merge {๋ณ‘ํ•ฉํ•  ๋ธŒ๋žœ์น˜๋ช…}
git pull์›๊ฒฉ ์ €์žฅ์†Œ ๋ณ€๊ฒฝ ๋‚ด์—ญ ๊ฐ€์ ธ์˜ค๊ธฐgit pull {์›๊ฒฉ ์ €์žฅ์†Œ ์‹๋ณ„์ž} {๋ธŒ๋žœ์น˜}
git fetch์›๊ฒฉ ์ €์žฅ์†Œ ๋ณ€๊ฒฝ ๋‚ด์—ญ ๊ฐ€์ ธ์˜ค๊ธฐ (!merge)git fetch {์›๊ฒฉ ์ €์žฅ์†Œ ์‹๋ณ„์ž} {๋ธŒ๋žœ์น˜}

์ง„์งœ ๋…ธ์…˜์—์„œ ์˜ฎ๊ธฐ๊ธฐ ๋„ˆ๋ฌด ํž˜๋“ค๋‹ค...
๋‹ค์Œ ํŒŒํŠธ๋Š” '์‹ค์ „ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ๊นƒ&๊นƒํ—ˆ๋ธŒ'์ž…๋‹ˆ๋‹ค.
๋นŒ๋“œ, ๋ฐฐํฌ, ์ปดํŒŒ์ผ๊ณผ CI/CD ๊ฐœ๋…์—์„œ ๋‚˜์˜ค๋Š” ์ž๋™ํ™” ๊ฐœ๋….
๊นƒํ—ˆ๋ธŒ ์•ก์…˜(Actions) ์‚ฌ์šฉ๋ฒ•๊ณผ ์ปค๋ฐ‹ ์ด๋ ฅ ์กฐ์ž‘ ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

profile
(์ดํ•ด ๋ชปํ–ˆ์Œ) (๊ฐœ์ธ ๋ธ”๋กœ๊ทธ๋กœ ์ด์ „)

0๊ฐœ์˜ ๋Œ“๊ธ€