ํ ์ด ํ๋ก์ ํธ๋ฅผ ์งํํ ๋ ๊ฐ๋ ๊นํ์ ์ฒ์ ๋ค๋ฃจ๋ ๋ถ์ด๋, ๊นํ์์ ํ์ ์ ์ฒ์์ผ๋ก ํ๋ ๋ถ๋ค์๊ฒ ์ด๋ค ์์ผ๋ก ๊นํ์ ์ฌ์ฉํ๋์ง ์ค๋ช ์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๊ฝค ์์์ต๋๋ค. ์ดํ ์ด๋ฌํ ์ํฉ์ด ์์ฃผ ์ผ์ด๋ ๊ฒ ๊ฐ์ ๊ธ๋ก ๋จ๊ฒจ๋ณผ๊น ํฉ๋๋ค.
๐ฌ ์ด ๊ธ์ Git์ด ์ต์ํ๋ค๋ ์ ์ ํ์ ์์ฑ๋์์ต๋๋ค. ์ปค๋ฐ, ํธ์&ํ, ๋ธ๋์น, ์ฒดํฌ์์, ๋จธ์ง ๋ฑ๋ฑ์ ๊ฐ๋ ์ ์์ ์ผ ํฉ๋๋ค. ๋ง์ฝ ๋ถ์กฑํ๋ค๊ณ ์๊ฐํ์๋ฉด ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํด๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ๋ํ Velog์ ์ข์ ๊ธ์ด ์์ด ๊ฐ์ด ๋จ๊ฒจ๋ด ๋๋ค.
Github์ ๊ธฐ๋ฅ๋ค์ ์์๋ณด๊ธฐ ์ด์ ์, Git ๋ธ๋์น๋ฅผ ๊ด๋ฆฌํ๋ ์ ๋ต ์ค ํ๋์ธ Git Flow๋ฅผ ์์๋ณผ๊น ํฉ๋๋ค. Git์ ๋ง์ด ์ฌ์ฉํ์ จ๋ค๋ฉด ๋จธ์ง(merge-๋ณํฉ)๊ณผ์ ์์ ๋ง์ ์ถฉ๋์ด ์ผ์ด๋๋ค๋ ๊ฒ์ ์์ค ๊ฒ๋๋ค. ์ด๋ฌํ ์ถฉ๋์ ์ต๋ํ ํผํ๊ณ ์ ๋ค์ํ ์ ๋ต์ ์ฌ์ฉํ๋๋ฐ, ๊ทธ ์ค ํ ์ ๋ต์ด Git Flow ์ ๋๋ค.
์ฌ์ค ์์ ์๋ ์ฌ์ง๋ณด๋ค ๋์ฑ ์์ธํ ์ ๋ต์ด Git Flow์ด์ง๋ง, ์ ๋ ์ด๋ฅผ ๊ฐ๋ตํํ ๋ฒ์ ์ ์์ฃผ ์ฌ์ฉํฉ๋๋ค. ์ฃผ๋ก ์์ ๊ฐ์ด ์ฃผ ๋ธ๋์น์ธ master์ develop ๋ธ๋์น๊ฐ ์๊ณ , ์ด ๋ ๋ธ๋์น์ ๋จธ์ง๋ฅผ ํ๋ค๊ณ ์๊ฐํ๋ฉด ์ฝ์ต๋๋ค.
Git Flow์์ ๊ฐ์ฅ ์ค์ํ ์ ์, ๋ธ๋ฆฐ์น์ ์ญํ ์ ๋ฐ๋ผ ๋ฌด์กฐ๊ฑด ์ง์ ๋ ๋ธ๋์น์๋ง ๋จธ์งํด์ผํ๋ค๋ ์ ์ ๋๋ค. ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ธ๋์น๋ ๋ฌด์กฐ๊ฑด develop ๋ธ๋์น์ ๋จธ์งํด์ผ ํ๊ณ , develop ๋ธ๋์น์ ์๋ ๊ธฐ๋ฅ๋ค์ ์ถ์(๋ฐฐํฌ)ํ ๋์๋ง master ๋ธ๋์น์ ๋จธ์งํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. Git Flow๋ฅผ ์ฌ์ฉํ๋ฉด์ ๊ฐ๋ฐํ ๋์ ๋ค์๊ณผ ๊ฐ์ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ๋จธ์งํฉ๋๋ค.
์ฌ๊ธฐ์, ์ ๋ ์ถ๊ฐ๋ก ํ๊ฐ์ง ๊ท์น์ ์ ํด ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ ๋์ฑ ๋ฎ์ถ๊ณ ์์ต๋๋ค. ํ๋ฒ ๋จธ์งํ ๊ธฐ๋ฅ ๋ธ๋์น๋ ์ฌ์ฌ์ฉํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆผ 2a์ 3์ฒ๋ผ ๋จธ์ง๋ฅผ ํ๊ณ ๋ ๋จธ์ง๋ฅผ ํ๋ ์์ ์ Git Flow์์ ๊ฐ๋ฅํ์ง๋ง ์ ๊ฐ ํ์ ์ ํ ๋ ์ถ์ฒํ์ง ์๋ ์์ ์ ๋๋ค.
์ ๋ ๋ณธ๊ฒฉ์ ์ผ๋ก ์งํํ๋ ํ๋ก์ ํธ๋ Git Flow, ์ข ๊ฐ๋ตํ๊ฒ ์งํํ๋ ํ๋ก์ ํธ๋ Git Flow์์ develop ๋ธ๋์น๋ฅผ ๋บ Github Flow๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก Github์ ํ์ฉํด๋ณผ๊น์? Github์ ํ์ ์ผ๋ก ์ฌ์ฉํ์ง ์์ผ์ ๋ถ๋ค์ ์ฃผ๋ก Code ๋ฉ๋ด๋ฅผ ์ฌ์ฉํ์ จ์ ํ ๋ฐ, ํ์ ์์๋ ์ ์ฌ์ง์์ ๋นจ๊ฐ์ ๋ฐ์ค์น 4๊ฐ์ง ๋ฉ๋ด๋ฅผ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. ์ด๋ฅผ ํ๋์ฉ ๋ค๋ค๋ณด๊ณ ์ด๋ค ์์ผ๋ก ํ์ ์ ์ฌ์ฉ๋๋์ง ์์๋ด ์๋ค.
ํ๋ก์ ํธ๋ ์์ ํํฉ๊ณผ ์งํ๋๋ฅผ ๋ณผ ์ ์๋ ๋ฉ๋ด์ ๋๋ค. ๋ค์์ ์๊ฐํ ์ด์, PR(ํ ๋ฆฌํ์คํธ)๋ค์ ํ๋์ ์์ ์ผ๋ก ๊ตฌ๋ถํด ๊ทธ ์์ ์ด ํ์ฌ ์ด๋ ์ ๋ ์งํ๋์๋์ง ํ์ธํ ์ ์์ต๋๋ค. ์ ์ ๊ฒฝ์ฐ์๋ ์๋ก์ด ๋ฒ์ ผ์ ์ค๋นํ๋ ๋จ์๋ณ๋ก ํ๋ก์ ํธ๋ฅผ ์๋ก ๋ง๋ค์ด ๋ชจ๋ ์งํ๋์์ ๋ ๋ฐฐํฌ(master ๋ธ๋์น์ ๋จธ์ง)ํ๋ ์์ผ๋ก ํ๋ก์ ํธ๋ฅผ ํ์ฉํฉ๋๋ค. ๋ํ, Github์์๋ ํ๋ก์ ํธ์ ๋ํด์ ์๋ํ๋ฅผ ์ง์ํฉ๋๋ค. ์ด๋ฅผ ํ์ฉํด ์ง์ ์์ ์ Drag & Drop์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒ์ด ์๋๋ผ, ์ด์๋ PR์ ์งํ๋ฅ ์ ๋ฐ๋ผ ์๋์ผ๋ก ์์ ์ด ์ฎ๊ฒจ์ง๊ฒ ํ ์ ์์ต๋๋ค.
๐ก ์๋จ ์ด๋ฏธ์ง์ ์๋ ํ๋ฉด์ Board๋ผ๊ณ ํ๋๋ฐ, ๋ง์น ๊ฒ์ํ์ ๋ฉ๋ชจ๋ฅผ ๋ถ์ด๋ ๊ฒ์ฒ๋ผ ์์๊ฐ ์ ์ฅ๋ฉ๋๋ค. ์ ์ฅ๋๋ ์์๋ฅผ ์์ ํด์ผ ํ๋ ์์๋ก ๋ ์ ์์ต๋๋ค.
์ด์๋ ์์ ์ ์ ๋ฆฌํ๋ ๋จ์์ ๋๋ค. ์์ ์ ๊ธฐ๋ฅ ๊ตฌํ์ด ๋ ์๋ ์๊ณ , ๋ฒ๊ทธ ์์ ์ด ๋ ์ ์์ต๋๋ค. ์ด์๊ฐ ๋ ์์ธํ๊ณ ์ธ๋ฐํ ์๋ก ๋์ฑ ์ฒด๊ณํ๋ ํ์ ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ด์๋ฅผ ๋ง๋ค๋ฉด ์ด์๋ฅผ ์ด์๋ค(open)๋ผ๊ณ ํ๊ณ , ์์ ์ด ๋๋ ์ด์๋ฅผ ์ ๋ฆฌํ๋ฉด ์ด์๋ฅผ ๋ซ์๋ค(close)๋ผ๊ณ ๋งํฉ๋๋ค.
์ด์ ์ธ๋ถํ๋ฉด์ ํตํด ์ด์์ ๊ตฌ์ฑ์์๋ฅผ ์ง์ด๋ณด๊ฒ ์ต๋๋ค.
์ด์์์ ์ค์ํ ์ ์ ๊ธฐ๋ฅ ๋ธ๋์น๋ฅผ ์ด์ ๋จ์๋ก ์์ฑํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ฐ์ฅ ์ถ์ฒ๋๋ ์์ ๋ฐฉ์์ ๋ธ๋์น ํ๋์ ์ด์ ํ๋์ฉ ์ฒ๋ฆฌํ๋ ์์ผ๋ก ์งํํ๋ ๊ฒ์ ๋๋ค. ์ด์ ์ด์์์ ์ ์ด๋์ ์์ ๋ค์ ๋ค ์งํํ๋ค๊ณ ํ๋ฉด, ๋ฐ๋ก develop ๋ธ๋์น์ ๋จธ์งํ๋ ๊ฒ์ผ๊น์? ๊ทธ๊ฑด ์๋๋๋ค. ๋จธ์งํ๊ธฐ ์ ์ ํ ๋จ๊ณ ์ ์ฐจ๋ฅผ ๊ฑฐ์ณ์ผ ํ๋๋ฐ, ๋ฐ๋ก Pull Request์ ๋๋ค.
ํ ๋ฆฌํ์คํธ, ์ค์ฌ์ PR์ ํ์
์์ ๊ฐ์ฅ ์ค์ํ ๊ธฐ๋ฅ์ผ๋ก, ๋จธ์ง๋ฅผ ํ๊ธฐ ์ ํ์ธ์ ๋ฐ๋ ์ ์ฐจ๋ฅผ ๋์์ฃผ๋ ๋ฉ๋ด์
๋๋ค. ํ์์๊ฒ ํ์ธ์ ๋ฐ์ ์๋ ์๊ณ , ์๋ํ๋ ์ ์ฐจ์ ์ํด ํ์ธ์ ๋ฐ์์ ์์ต๋๋ค. ์ ์๋ PR review๋ฅผ ํตํด, ํ์๋ Action์ ์ํด ํ์ธ์ ๋ฐ์ ์ ์์ต๋๋ค. ์ ํ๋ฉด์ ๋ณด๋ฉด ์ด์ ์ธ๋ถํ๋ฉด๊ณผ ๋ณ ๋ค๋ฅผ๊ฒ ์๊ณ , ์์์ ์ค๋ช
ํ ๊ฒ๊ณผ ๊ฐ๊ฒ ์๋๋ฉ๋๋ค. ๋ค๋ง ์ฐ์ธก์ Reviewers๋ผ๋ ํญ์ด ์ถ๊ฐ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. Reviewers๋ฅผ ํตํด ์ด ๋ธ๋์น, ์ด PR์ ๋ฆฌ๋ทฐํ ํ์์ ์ง์ ํ ์ ์์ต๋๋ค. ๋ฆฌ๋ทฐ์ด๋ก ์ง์ ์ด ๋๋ฉด, ์๋จ๊ณผ ๊ฐ์ด Add your review ๋ฒํผ์ ๋๋ฌ ๋ฆฌ๋ทฐ๋ฅผ ์์ํ ์ ์์ต๋๋ค.
๐ก ํ์ ์ ํตํด ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๊ฒฝ์ฐ, ํ ๊ฐ๋ฐ์๊ฐ ๋ง๋ ์ฝ๋๋ ๋๋จธ์ง ํ์์ด ๋ชจ๋ ๋ค ์ฝ๋๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ฆฌ๋ทฐ๋ฅผ ํ๋ ์ด์ ์ค ํ๋์ฃ .
Reviewer๋ก ์ง์ ๋๋ค๋ฉด, ์ด ๋ธ๋์น์ ์๋ ์ฝ๋์ ์ปค๋ฉํธ๋ฅผ ๋จ๊ธฐ๋ฉฐ ์ฝ๋๋ฅผ ๋ฆฌ๋ทฐํ ์ ์์ต๋๋ค. ์ด ์ฝ๋๋ฅผ ์ ์์ฑํ๋์ง, ์ด๋ ๊ฒ ์์ฑํด๋ ๋๋ ๊ฒ์ธ์ง, ์ ์๋๋๋์ง ํ์ธํ๋ฉฐ ์ฝ๋ฉํธ๋ฅผ ๋จ๊ธฐ๋ฉด์ ์ฝ๋์ ํ๋ฆฌํฐ๋ฅผ ๋์ผ ์ ์์ต๋๋ค. ๋ฌ์๋์ ์ฝ๋ฉํธ๋ฅผ ๋ณด๊ณ ์ด๋ฅผ ํด๊ฒฐํ๋ค๋ฉด, ์ฝ๋ฉํธ ํ๋จ์ ์๋ Resolve conversation์ ๋๋ฌ ์ปค๋ฉํธ ์งํ์ฌํญ์ ์ ๋ฆฌํ ์ ์์ต๋๋ค.
๋ํ, Github์์ ์ ๊ณตํ๋ Suggestion ๊ธฐ๋ฅ์ ํตํด ์ด๋ป๊ฒ ๋ฐ๋์์ผ๋ฉด ์ข๊ฒ ๋์ง ์ ์ํ ์๋ ์์ต๋๋ค. Github์์๋ ์ ์ํ ์ฝ๋์ ์ ์ฝ๋ ๊ฐ diff๋ฅผ ๋ณด์ฌ์ฃผ๋ฉฐ ์ด๋ป๊ฒ ๋ฐ๊ฟ์ผ ํ๋์ง ํ๋์ ๋ณผ ์ ์์ต๋๋ค.
๋ฆฌ๋ทฐ ํ๋ฉด์์ ์ปค๋ฉํธ๋ฅผ ๋ฌ๊ณ ๋ฆฌ๋ทฐ๋ฅผ ๋ง๋ฌด๋ฆฌํ๋ ค๋ฉด, Review changes ๋ฒํผ์ ๋๋ฌ ๋ฆฌ๋ทฐ๋ฅผ ์ ์ถํ ์ ์์ต๋๋ค. ๋ฆฌ๋ทฐ ์ดํ์ ์ปค๋ฉํธ๋ฅผ ๋ฌ๊ณ Submit review๋ฅผ ๋๋ฅด๋ฉด ๋ฆฌ๋ทฐ๊ฐ ๋ง๋ฌด๋ฆฌ๋๋๋ฐ, ๋ฒํผ ์๋จ์ ์๋ Select Toggle์ ํตํด ๋ฆฌ๋ทฐ ์ํฉ์ ํ์ํ ์ ์์ต๋๋ค.
์ด ๋ฆฌ๋ทฐ ์ํฉ์ด ์ค์ํ ์ด์ ๋ ์ด ๋ฆฌ๋ทฐ ์ํฉ์ ๋ฐ๋ผ ๋จธ์ง๋ฅผ ํ ์ง ํ์ง ์์์ง ๊ฒฐ์ ํ๋ ํ์ธ์ ์ฐจ ์ค ํ๋์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ๋ก์ ํธ ์ธํ ์ ๋ค์ด๊ฐ ๋ณด๋ฉด ๋ธ๋์น๋ฅผ ๊ด๋ฆฌํ๋ ์ค์ ์ด ์๋๋ฐ, Approve๋ฅผ ๋ฐ์์ผ์ง ๋จธ์ง๋ฅผ ํ ์ ์๊ฒ ์ค์ ํ ์ ์์ต๋๋ค. ์๋ 1๋ช ์ Approve๋ฅผ ๋ฐ์ผ๋ฉด ๋จธ์ง๊ฐ ๊ฐ๋ฅํ๊ฒ ๋์ด์์ง๋ง, ์ฌ๋ฌ ๋ช ์ ์ค์ ํด ์ผ์ ๊ฐ์ ์ด์์ Approve๋ฅผ ๋ฐ์์ผ์ง ๋จธ์งํ ์ ์๊ฒ ์ค์ ํ ์ ์์ต๋๋ค.
๐ก Draft PR์ด๋ผ๋ ๊ธฐ๋ฅ์ด ์๋๋ฐ, ์์ ์ด ์๋ฃ๋๊ธฐ ์ ์์๋ก PR์ ์ฌ๋ฆด ์ ์์ต๋๋ค. ์๋๋๋ก ์งํ๋๋ค๋ฉด ์์ ์ด ์๋ฃ๋๊ธฐ ์ ๊น์ง๋ ์ฝ๋๋ฅผ ์ผ๋ง๋ ํ๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ด ์ ๋งคํ๋ฐ, Draft PR๋ก ์ฌ๋ ค๋์ผ๋ฉด ์์ ์ด ์๋ฃ๋๊ธฐ ์ PR ํ์ด์ง์ ์ฝ๋ ํํฉ์ ํ์ธํ ์ ์์ด ๋์ฑ ํธ๋ฆฌํฉ๋๋ค!
์์์ ์ธ๊ธํ๋ ํ์ธํ๋ ์ ์ฐจ ์ค ํ๋๊ฐ ์ก์ ์ ๋๋ค. ์ต๊ทผ ๋ค์ด CI/CD, Devops๋ฑ ํ๋ก์ ํธ๋ฅผ ์ฒดํฌ, ๋ฐฐํฌํ๋ ๊ฒ์ ์๋ํ์ ํ์์ฑ์ด ์ฆ๊ฐํ๊ณ ์๋๋ฐ, Github์์๋ ์ก์ ์ด๋ผ๋ ๊ธฐ๋ฅ์ ํตํด ์๋ํ๋ฅผ ์ ๊ณตํ๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ๊ฐ ์งํ ์ค์ธ React ํ๋ก์ ํธ์์ ESLint๊ฐ ์ง์ผ์ก๋์ง ํ์ธํ๊ณ , ํ ์คํธ ์ฝ๋๋ฅผ ๋๋ฆฌ๋ฉฐ ํ ์คํธ๊ฐ ํต๊ณผํ๋์ง ํ์ธํ๋ ์์ ์ ์ก์ ์ ํตํด ์งํํฉ๋๋ค. PR์์ ๋ค๋ค๋ ๋ธ๋์น ์ค์ ์ค Require status checks to pass before merging ์ ์ค์ ํ๋ฉด ์ก์ ์ ํต๊ณผํด์ผ์ง๋ง ๋จธ์งํ ์ ์๊ฒ ์ค์ ํ ์ ์์ต๋๋ค.
๐ ์ด ๊ธ์์ ์ก์ ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์ธ๊ธํ๋ค๋ฉด ํ 3ํ์ด์ง ๋ ๋์ฌ ์ ๋๋ก ๋ฐฉ๋ํ๋ฏ๋ก ๋ค๋ฃจ์ง ์๊ฒ ์ต๋๋ค.
์ด์ , ์ ๊ฐ ํ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ ๋ฆฌํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ก PR์ ํตํด ๋จธ์ง๊ฐ ๋๋ค๋ฉด PR ํ์ด์ง์์ ๋ธ๋์น๋ฅผ ์ ๊ฑฐํ ์ง ๋ฌผ์ด๋ณด๋ ๋ฒํผ์ด ์์ต๋๋ค. Git Flow์์ ์ธ๊ธํ ๊ฒ ์ฒ๋ผ, ํ๋ฒ ๋จธ์งํ ๋ธ๋์น๋ ์ ๊ฑฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์, develop ๋ธ๋์น๋ ์ ๊ฑฐํ๋ฉด ์๋์!
์ ๊ฐ ์ด ๊ธ์ ์ ์ ๋ฐฉ์์ด ๋ชจ๋ฒ์ ๋ต์ ์๋๋๋ค. ์ํฉ์ ๋ฐ๋ผ ์ ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋ ์ ์๊ณ , ์ ๊ฐ ์ฌ์ฉํ๋ ๋ฐฉ์์ด ๋นํจ์จ์ ์ผ ์ ์์ต๋๋ค. ์ฌ๋ฌ๋ถ์ ์๊ฒฌ์ ๋๊ธ์ ๋ฌ์์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค!
์ข์ ๊ธ ๊ฐ์ฌํฉ๋๋ค. Github์์ ์ด๋ ๊ฒ ๋ค์ํ ๊ฒ๋ค์ด ๊ฐ๋ฅํ์ง ์ฒ์ ์์์ด์. :thumb_up:
๊ตฟ๊ตฟ! Action์ ์จ๋ณธ ์ ์๋๋ฐ ๋ค์์ ์จ๋ด์ผ๊ฒ ๋ค์! ์๊ฐ ๊ฐ์ฌํฉ๋๋ค :)