์„œ๋ก 

ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์‹œ์ž‘ํ•˜๊ธฐ ์ „, ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค๊ณ  ํ•ฉ๋ณ‘ํ•˜๋Š” ์—ฐ์Šต์„ ํ•ด๋ดค๋‹ค. ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ํ•˜๋Š” ๊ณผ์ •์—์„œ๋Š” ๊ฐœ๋ฐœ ์ด์™ธ์˜ ๋ถ€๊ฐ€์ ์ธ ์š”์†Œ์— ์‹œ๊ฐ„์„ ๋œ ์†Œ๋ชจํ•˜๊ณ  ์‹ถ๊ธฐ ๋•Œ๋ฌธ์—, ๋ฏธ๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑด ์—ฐ์Šตํ•ด๋ณด๊ณ  ๋“ค์–ด๊ฐ€๋Š”๊ฒŒ ๋งž๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

๋ณธ๋ก 

ํ”„๋กœ์ ํŠธ์—์„œ ์„ ํƒํ•œ git workflow์€ Gitlab flow ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— main ๋ธŒ๋žœ์น˜์—์„œ develop ๋ธŒ๋žœ์น˜์™€ develop ๋ธŒ๋žœ์น˜์—์„œ featrue ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“œ๋Š”ํ•˜๋Š” ์—ฐ์Šต์„ ์ง„ํ–‰ํ–ˆ๊ณ , ์—ญ์ˆœ์œผ๋กœ ํ•ฉ๋ณ‘ํ•˜๋Š” ์—ฐ์Šต์„ ์ง„ํ–‰ํ–ˆ๋‹ค.

๋ถ„๊ธฐ

๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“œ๋Š” ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

git branch <์ƒ์„ฑํ•  ๋ธŒ๋žœ์น˜ ์ด๋ฆ„> <๋ถ„๊ธฐ์ ์ด ๋˜๋Š” ๋ธŒ๋žœ์น˜ ์ด๋ฆ„>
git checkout -b <์ƒ์„ฑํ•  ๋ธŒ๋žœ์น˜ ์ด๋ฆ„>
  • git branch์€ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ๋งŒ ํ•œ๋‹ค.
    • <๋ถ„๊ธฐ์ ์ด ๋˜๋Š”="" ๋ธŒ๋žœ์น˜="" ์ด๋ฆ„="">์„ ์ƒ๋žตํ•˜๋ฉด ํ˜„์žฌ ์œ„์น˜ํ•˜๊ณ  ์žˆ๋Š” ๋ธŒ๋žœ์น˜์—์„œ ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.
  • git checkout -b์€ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•œ๋‹ค.

  • checkout ๋ช…๋ น์–ด๊ฐ€ ์ƒ์„ฑ๊ณผ ์ด๋™์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํŽธํ•˜๋‹ค !

develop ๋ธŒ๋žœ์น˜์˜ ๊ฒฝ์šฐ ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ๊ด€๋ฆฌ๋˜๊ณ , feature ๋ธŒ๋žœ์น˜์˜ ๊ฒฝ์šฐ ๊ฐœ์ธ ๋กœ์ปฌ์—์„œ ๊ด€๋ฆฌ๊ฐ€ ๋œ๋‹ค. ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค๊ณ  ์›๊ฒฉ์— ์˜ฌ๋ฆฌ๋Š” ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

git push <์›๊ฒฉ ์ €์žฅ์†Œ> <์˜ฌ๋ฆด ๋ธŒ๋žœ์น˜ ์ด๋ฆ„>

  • ์›๊ฒฉ ์ €์žฅ์†Œ๋Š” origin, ์˜ฌ๋ฆด ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์€ feature/test๋กœ ์„ค์ •ํ–ˆ๋‹ค.
  • ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊นƒํ—ˆ๋ธŒ์— ์ ‘์†ํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ๋ธŒ๋žœ์น˜๊ฐ€ ์˜ฌ๋ผ๊ฐ”์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

</br> ๊นƒํ—ˆ๋ธŒ์—์„œ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.

  • View all branches ์œผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

  • ์šฐ์ธก ์ƒ๋‹จ์— New branch ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค.

  • ๊ทธ๋Ÿผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐฝ์ด ๋‚˜์˜จ๋‹ค.
    • New branch name : ์ƒ์„ฑํ•  ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•œ๋‹ค.
    • Sourece : ๋‚˜์˜ฌ ๋ธŒ๋žœ์น˜๋ฅผ ์„ ํƒํ•œ๋‹ค.
  • ์„ค์ •์ด ๋๋‚˜๋ฉด Create new branch ๋ฅผ ๋ˆ„๋ฅธ๋‹ค.
  • ๊ทธ๋Ÿผ, ์›๊ฒฉ ์ €์žฅ์†Œ์— feature/1 ์ด ์ƒ์„ฑ๋์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•ฉ๋ณ‘

feature ์—์„œ develop ๋กœ ํ•ฉ๋ณ‘ํ•˜๊ธฐ ์ „, ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธ์„ ํ•ด์•ผํ•œ๋‹ค. ์•„๋ฌด ๋ธŒ๋žœ์น˜๋‚˜ ๋ง‰ ํ•ฉ๋ณ‘์„ ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด PR ์ด๋‹ค. PR๋ฅผ ํ†ตํ•ด ํ•ฉ๋ณ‘ํ•˜๊ธฐ ์ „ ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€ ํŒ€์›๋“ค๊ณผ ๊ฐ™์ด ์ฒดํฌํ•˜๊ณ  ๋ธŒ๋žœ์น˜๋ฅผ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋‹ค. feature/test ์—์„œ develop ๋กœ PR๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์ขŒ์ธก ์•„์ด์ฝ˜ Pull Request ์„ ๋ˆ„๋ฅด๊ณ , Create Pull Request... ์„ ๋ˆ„๋ฅธ๋‹ค.

  • PR ์ถœ๋ฐœ์ง€์™€ ๋ชฉ์ ์ง€๋ฅผ ์„ค์ •ํ•˜๊ณ , ์ œ๋ชฉ๊ณผ ์„ค๋ช…์„ ์ž‘์„ฑํ•œ๋‹ค.
  • ์ดํ›„ ํ•˜๋‹จ์— ์žˆ๋Š” Create Pull Request ๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

  • ๊ทธ๋Ÿผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐฝ์ด ๋‚˜์˜จ๋‹ค.
  • ์ด๋Š” feature/test ๋ธŒ๋žœ์น˜๊ฐ€ ๋กœ์ปฌ์—๋งŒ ์žˆ๊ณ  ์›๊ฒฉ ์ €์žฅ์†Œ์—๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์˜จ๋‹ค.
  • ์›๊ฒฉ ์ €์žฅ์†Œ์— ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•œ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ๊ทธ๋Œ€๋กœ OK ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค.
  • ์ดํ›„, ๊นƒํ—ˆ๋ธŒ์— ๋“ค์–ด๊ฐ„๋‹ค.

  • ๋‹ค์Œ๊ณผ ๊ฐ™์ด PR์ด ์ƒ๊ฒผ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ํ˜„์žฌ๋Š” ๋ณ„๋„๋กœ ์ž‘์„ฑํ•œ ๋‚ด์šฉ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‚˜์˜ค๋Š” ๊ฒƒ ๊ฐ™๋‹ค.
  • ํ•ฉ๋ณ‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ Merge pull request ๋ฅผ ๋ˆ„๋ฅด๊ณ , Confirm merge ๋ฅผ ๋ˆ„๋ฅธ๋‹ค.

  • ํ•ฉ๋ณ‘์ด ์™„๋ฃŒ๊ฐ€ ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด Merged ์ƒํƒœ๋กœ ๋ณ€ํ•˜๊ฒŒ ๋˜๊ณ , PR์€ ๋‹ซํžŒ๋‹ค.
  • feature ๋ธŒ๋žœ์น˜๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ๋ฌด์กฐ๊ฑด ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ์‚ญ์ œํ•  ์ˆ˜์š”๊ฐ€ ์žˆ๋‹ค๋ฉด Delete branch ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ feature ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
    • ๋กœ์ปฌ์— ์žˆ๋Š” feature ๋ธŒ๋žœ์น˜๋Š” ์‚ญ์ œ๊ฐ€ ์•ˆ๋œ๋‹ค.
    • ๋กœ์ปฌ์— ์žˆ๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
git branch -d <์‚ญ์ œํ•  ๋ธŒ๋žœ์น˜ ์ด๋ฆ„>
- ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ˜„์žฌ ์œ„์น˜ํ•˜๊ณ  ์žˆ๋Š” ๋ธŒ๋žœ์น˜๊ฐ€ ์‚ญ์ œํ•  ๋ธŒ๋žœ์น˜๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์ด์–ด์•ผ ํ•œ๋‹ค.
- ์›๊ฒฉ์— ์žˆ๋Š” ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
git push origin --delete <์‚ญ์ œํ•  ๋ธŒ๋žœ์น˜ ์ด๋ฆ„>

๋งˆ๋ฌด๋ฆฌ

์ฒ˜์Œ์œผ๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑ, ์ด๋™, ํ•ฉ๋ณ‘ ๊ทธ๋ฆฌ๊ณ  ์‚ญ์ œ๊นŒ์ง€ ํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค. ๋ธŒ๋žœ์น˜๋ผ๋Š” ์˜์—ญ์ด ์–ด๋ ต๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ํ•  ๋งŒํ•˜๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ์•ˆํ•ด๋ณด๊ณ  ์–ด๋ ต๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์Šต๊ด€์„ ๊ณ ์ณ์•ผ ๊ฒ ๋‹ค.

ํ•ฉ๋ณ‘์ด๋ผ๊ณ  ์“ฐ๊ณ  PR์„ ๋‹ค๋ฃฌ ๊ฒƒ ๊ฐ™๋‹ค. ํ•ฉ๋ณ‘ ๊ณผ์ •์—์„œ ์ƒ๊ธฐ๋Š” ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •๋„ ์•„๋งˆ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ๊ณผ์ •์—์„œ ์ƒ๊ธธ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐ๋œ๋‹ค. ์ถฉ๋Œ ๊ด€๋ จ ๋‚ด์šฉ๋„ ๋‚จ๊ฒจ์•ผ๊ฒ ๋‹ค.

๊ธฐ์ดˆ์ ์ธ ๋ถ€๋ถ„๋งŒ ๋‹ค๋ค˜๊ธฐ๋„ ํ–ˆ๊ณ  ํ˜ผ์ž ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ๋งŒ ์—ฐ์Šตํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ๋Š” ๋” ๋งŽ์€ ๊ฒƒ๋“ค์ด ์žˆ์„ ๊ฑฐ ๊ฐ™๋‹ค. ํ˜‘์—…์„ ํ•˜๋Š” ๊ธฐํšŒ๊ฐ€ ์ƒ๊ธด๋‹ค๋ฉด ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ž˜ ์‚ฌ์šฉํ•˜๊ณ , ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์šฐ๋Š” ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ๊ทธ๋•Œ ์ถ”๊ฐ€ํ•ด์•ผ๊ฒ ๋‹ค.