๋ชจ๋ฅด๋ ๊ฑธ ์ฆ๊ธฐ์!
์ด๋ฒ์ ์ฒ์์ผ๋ก ์ ๋๋ก ๋ ํ์ ์ ๊ฒฝํํ๋ฉด์ ์ด์, PR(Pull Request), Squash and Merge ๊ฐ์ ์ฉ์ด๋ค์ ์ค์ ๋ก ์ฌ์ฉํด๋ณด์๋ค. ๋จ์ด๋ค์ ์ต์ํ์ง๋ง, ์ด๋ป๊ฒ ํจ์จ์ ์ผ๋ก ํ์ฉํ๊ณ ์ ์ฌ์ฉํ๋์ง์ ๋ํด์๋ ์ ์์ง ๋ชปํ๋ค. ๋คํํ๋ ๊ฒฝํ์ด ํ๋ถํ ํ์ ๋๋ถ์ ๊ทธ ์๋ฏธ์ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ฝ๊ฒ ์ดํดํ ์ ์์๊ณ , ํ์ ์ ํจ์จ์ฑ์ ๋์ด๋ ๋ฐฉ๋ฒ๋ ๋ฐฐ์ธ ์ ์์๋ค.

๊นํ๋ธ์ ๋ ํฌ์งํ ๋ฆฌ(Repository) ๋ฅผ ์์ฑํ๊ฒ ๋๋ฉด
Issues๋ผ๋ ๊ฒ์ ๋ง์ด ๋ดค์ ๊ฒ์ด๋ค. ์ด์(Issue)? ๋ญ๊ฐ ๋ฌด์ธ๊ฐ ์์ข์์ผ์ด ์์ ๋ ์ปจ๋์ ์ด์, ๋ ์จ ์ด์ ๋ผ๋ ํํ์ ์ข ์ข ์ฌ์ฉํ๋๋ฐ ์์ข์ ํํ๊ฐ์ง๋ง ๊ทธ๋ ์ง ์๋ค.
PR์ ํ ๋ ์ด์ ๋ฒํธ๋ฅผ ์ ์ด ์ด๋ค ์์
์ ํ๋์ง ์ฝ๊ฒ ํ์
์ด ๊ฐ๋ฅํ๋ค.A๋ผ๋ ์ฌ๋์ด ํ์๊ฐ์ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํด์ผ ํ๋ ์ํฉ ๋ฐ์
ํ์๊ฐ์ ๊ธฐ๋ฅ์ ๋ํ Issue ์์ฑ(๊ธฐ๋ฅ ์ค๋ช ์์ฑ (๋ฌด์์ ํ ๊ฒ์ธ์ง, ์๋ฃ ๊ธฐ์ค ๋ฑ))
develop ๋ธ๋์น์์ feature/ํ์๊ฐ์
(feature/์ด์๋ฒํธ)๊ฐ์ feature ๋ธ๋์น๋ก ๋ถ๊ธฐ
์์ฑํ feature ๋ธ๋์น์์ ํ์๊ฐ์ ๊ธฐ๋ฅ ๊ฐ๋ฐ ์งํ
๊ฐ๋ฐ ์๋ฃ ํ PR(Pull Request) ์์ฑ
PR ์ ๋ชฉ์ด๋ ๋ณธ๋ฌธ์ ์ด์ ๋ฒํธ ๋ช ์ (ex: Closes #์ด์๋ฒํธ)
๐ค ํ์ ์ ํ ๋๋ ์ด์(issue) ํ ํ๋ฆฟ์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋๊ณ ์ ๋ชฉ๊ณผ ๋ณธ๋ฌธ ๋ด์ฉ์ ์ด๋ป๊ฒ ์ ์ ๊ฒ์ธ์ง, ๋ธ๋์น๋ฅผ ์ด์๋ฒํธ๋ฅผ ํฌํจ์ํฌ๊ฑด์ง ์ ํด ๋๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ ํ์๋ค.



์๊ธฐ๊ฐ ๋งก์ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ ํ, ํ์ dev ๋ธ๋์น์ merge๋ฅผ ํ๊ณ ์ถ์ผ๋ฉด PR(Pull Request)์ ์์ฑํ๋ ๊ฒ์ด ์ข๋ค. ์์ ์ด๋ฏธ์ง๋ ๊ทธ๋ฅ "๋์ ๋ก์ปฌ dev์ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ dev ๋ธ๋์น์ ๋ณํฉ(merge)ํ ๊ฑฐ๋ค." ๋ผ๋ ์๋ฏธ์ง๋ง(๊ทธ๋ฅ ์ด๊ฑธ ์บก์ณํด์ด) ์๋๋ผ๋ฉด feat/8(์ด์๋ฒํธ,๋๋ ์์
๋ด์ฉ) ๋ธ๋์น๋ฅผ ํ์ dev ๋ธ๋์น์ ๋ณํฉ(merge)ํ๋ ๋ฐฉ์์ ๋ง์ด ์ฌ์ฉํ๋ค.
๐ PR์ ์ ๋ชฉ, ๋ณธ๋ฌธ ๋ด์ฉ๋ ํ๊ณผ ํจ๊ป ์๋ก ๋ง์ถ๊ฑฐ๋ ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ ํต์ผ์ ํ๋ ๊ฒ์ด ์ข๋ค.
์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์ ์ ์์ด์
โ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ด ์ฝ๋๋ฅผ ํ์ธํ๊ณ , ๋ฌธ์ ๋ ๊ฐ์ ์ ์ ์ฐพ์์ค๋ค.
โ ์ค์๋ฅผ ์ค์ด๊ณ , ๋ ์ข์ ์ฝ๋๋ฅผ ๋ง๋ค ์ ์๋ค.
ํ์
ํ๋ฆ์ ์์ ํ๊ฒ ์ ์งํ ์ ์์ด์
โ ๋ฐ๋ก ๋ฉ์ธ(main/master) ๋ธ๋์น์ ๋ฐ์ํ์ง ์๊ณ , ๊ฒํ ํ ๋ณํฉํ๋ฏ๋ก
์ฝ๋๊ฐ ๋ง๊ฐ์ง๋ ๊ฑธ ๋ฐฉ์งํ ์ ์๋ค.
๋ณ๊ฒฝ ์ด๋ ฅ์ ๊น๋ํ๊ฒ ๋จ๊ธฐ๊ธฐ ์ํด
โ ์ด๋ค ๊ธฐ๋ฅ/๋ฒ๊ทธ ์์ ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ก๋์ง ๋ฌธ์์ฒ๋ผ ๊ธฐ๋ก๋๋ค.
CI/CD ํ์ดํ๋ผ์ธ๊ณผ ์ฐ๊ณ๋๊ธฐ ๋๋ฌธ์
โ PR์ด ์ฌ๋ผ์ค๋ฉด ์๋ ํ
์คํธ, ๋น๋ ๋ฑ์ ๋๋ ค์ ์ฝ๋ ํ์ง์ ์๋ ๊ฒ์ฆ์ด ๊ฐ๋ฅํ๋ค.
ํ ์ปค๋ฎค๋์ผ์ด์
์๋จ์ผ๋ก์๋ ์ ์ฉ
โ โ์ด๋ ๊ฒ ๊ตฌํํ๋๋ฐ, ๋ ์ข์ ๋ฐฉ๋ฒ ์์๊น์?โ ์์ผ๋ก
ํผ๋๋ฐฑ ์ฃผ๊ณ ๋ฐ๋ ์ฅ์ด ๋๋ค.

๋ณํฉ ๋ฐฉ์์ด ๋ง์๊ฑธ ์๊ณ ์์์ง๋ง Squash and Merge๋ ์ฒ์ ์ฌ์ฉํด๋ณด์๋ค. ๊ทธ๋์ ๋ณํฉ ๋ฐฉ์๋ ์ ๋ฆฌํ๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ์ ์ ๋ฆฌํ ๋ ค๊ณ ํ๋ค.
git merge my-branch

main ๋ธ๋์น์์ feature ๋ธ๋์น๋ฅผ ๋ถ๊ธฐํจfeature ๋ธ๋์น์์ ์๋ฌด ์ปค๋ฐ๋ ํ์ง ์์feature ๋ธ๋์น๋ฅผ main์ ๋จธ์งํจ๐ ๊ทธ๋ผ ์ด๋ป๊ฒ ๋ณํฉ๋ ๊น?
์ด ๊ฒฝ์ฐ feature ๋ธ๋์น๋ ์ฌ์ค์ main๊ณผ ๋์ผํ ์ํ์ด๋ฏ๋ก
Git์ ๊ทธ๋ฅ ๋ธ๋์น ํฌ์ธํฐ๋ฅผ ์ฎ๊ธฐ๊ธฐ๋ง ํ๋ค.
์ฆ, feature ๋ธ๋์น๊ฐ
main์์ ํ ๋ฐ์ง๋ ์์ผ๋ก ๋์๊ฐ์ง ์์๋ค๋ฉด,
main๋ธ๋์น๋ ๊ทธ๋ฅfeature๋ธ๋์น ์ปค๋ฐ๋ค์ ๋ฐ๋ผ์ก๋ ์์ผ๋ก merge

feature๊ฐ main ๋ธ๋์น์์ ๋ถ๊ธฐ๋๊ณ , main ๋ธ๋์น์ ์๋ก์ด ์ปค๋ฐ์ด ์๊ฒผ์ ๊ฒฝ์ฐ,feature์ main์ ๊ณตํต ๋ถ๋ชจ๋ก ํ ์๋ก์ด Merge ์ปค๋ฐ์ ์์ฑํ๋ ๋ฐฉ์
merge๋ณด๋ค ๋จ์์๋ ์ ๋ณด๋์ด ๋น๊ต์ ์ ๊ธฐ ๋๋ฌธ์ merge log๋ฅผ ๊น๋ํ๊ฒ ๋จ๊ธธ ์ ์์ง๋ง ์ธ์ ์ด๋ค ์ฝ๋๋ฅผ ๋ฐ๊ฟจ๋์ง์ ๋ํ ์ ๋ณด๋ฅผ ์์ ์ ์๋ค๋ ๋จ์ 

feature ๋ธ๋์น์ ์ปค๋ฐ ๋ด์ฉ์ main ๋ธ๋์น์ ์ฌ๋ฐฐ์นํ๊ณ ์ถ๊ฐ ์ปค๋ฐ ์์ด ๋ณํฉํ๋ ๋ฐฉ์merge๋ฅผ ํ๋ฉด base๊ฐ ๋ฐ๋์ง๋ ์์ง๋ง, rebase๋ ๋จ์ด ๊ทธ๋๋ก base๋ฅผ ๋ฐ๊ฟ์ ๋ณํฉgit checkout feature
git rebase main
git checkout main
git merge feature
๐ค
base๋ โ๋ธ๋์น๊ฐ ๊ฐ๋ผ์ ธ ๋์จ ์ง์ โ ์ฆ ์๋ก ๋ค๋ฅธ ๋ ๋ธ๋์น์ ๊ณตํต ์กฐ์(commit) ์ ๊ฐ๋ฆฌํจ๋ค.
์ฐธ๊ณ