๐ 2์ฃผ์ฐจ ์ปค๋ฆฌํ๋ผ์์๋ ๋ค์ํ ๋ช
๋ น์ด(command)๋ค๊ณผ Git์ ๋ํด ์ฃผ๋์ ์ผ๋ก ํ์ตํ๋ค.
2์ฃผ์ฐจ ํ์ต์ ๋๋ง์น๊ณ ๋๋์ ์,
Git์ ๋ํ ์ปค๋งจ๋๋ค์ ์ด๋์ ๋ ์์งํ๊ณ ์์ด์ผ ํ์
์ ํ ๋ ๋งํ์ง ์๊ณ ์์ํ๊ฒ
์
๋ฌด๋ฅผ ์งํํ ์ ์์๊ฒ ๊ฐ์๋ค.
2์ฃผ์ฐจ ์ํด๋ฆฌ ํ์ดํผ ๋ฏธ์
์ Git์ ๋ํ ์ฃผ์ ๋ฅผ ์ ์ ํด์ฃผ์
จ๋ค.
- Git์์ branch merge ๋ฐฉ๋ฒ๋ค๊ณผ ๊ฐ ๋ฐฉ๋ฒ์ ํน์ง์ ์ค๋ช ํด ์ฃผ์ธ์.
์ด๋ ํ ํ๋ก์ ํธ ์์
์ ์งํํ ๋ ๊ฐ์ธ์ ์ผ๋ก ์์
์ ์งํ ํ ์์๊ฒ ํ๋ ๊ณต๊ฐ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ธ๋์น๋ ์ด๋ป๊ฒ ์์ฑํ๋์ง , ๊ฐ ๋ช
๋ น์ด๋ค์ ํน์ง์ ์์๋ณด์.
๐ git branch [์์ฑ๋ธ๋์น์ด๋ฆ] : ์ ๋ธ๋์น๋ฅผ ์์ฑํด์ค๋ค.
๐ git checkout [๋ธ๋์น์ด๋ฆ]: ๋ธ๋์น๋ก ์ด๋ํ๊ฑฐ๋ ์ํน ํธ๋ฆฌ์ ํ์ผ์ ๋ณต์ํ๋ค.
๐ git checkout -b [์์ฑ๋ธ๋์น์ด๋ฆ] :๋ธ๋์น๋ฅผ ์๋ก ์์ฑํด์ฃผ๊ณ ์์ฑ๋ ๋ธ๋์น๋ก ์ด๋ํ๋ค.
๐ git switch [๋ธ๋์น์ด๋ฆ]: ๋ธ๋์น๋ก ์ด๋ํ๋ค.
๐ git branch -d [๊ธฐ์กด ๋ธ๋์น ์ด๋ฆ] : ๊ธฐ์กด์ ์๋ ๋ธ๋์น๋ฅผ ์ญ์ ํ๋ค.
์์๊ฐ์ ๋ช
๋ น์ด๋ค์ ์ฌ์ฉํ์ฌ ์์
์ ์งํํ ๋ ๊ฐ์ธ๊ณต๊ฐ(branch)์์ ๋จผ์ ์ฝ๋๊ฐ ์ ์๋ํ๋์ง ํ์ธ ์์
์ ๋ ๋ง์น ํ merge๋ฅผ ํตํด ๊ฐ์ธ์ ์ธ ๊ณต๊ฐ๊ณผ ํ์
ํ๊ณ ์๋
๋ค๋ฅธ๊ณต๊ฐ์ ๋ณํฉํด์ฃผ๋ ์์๊ฐ์๋ค.
์ฝ๊ฒ ๋งํด ๋์ branch์์ ํ์ธ ์์
์ด ๋๋๋ฉด main branch์ ๋์ branch๋ฅผ ํฉ์น ๋ "merge" ๋ฅผ ์ฌ์ฉํ๋ค.
merge๋ ์์ ๋งํ๋ฏ์ด ๋ ๋ธ๋์น๋ฅผ ๋ณํฉํด์ฃผ๋ ํน์ง์ด์๋ค.
main ๋ธ๋์น๋ฅผ ๋ถ๋ฆฌํ์ฌ ๊ฐ์ธ๋ธ๋์น๋ฅผ ์์ฑ ํ๊ณ ๊ฐ์ธ ๋ธ๋์น์์ ์์ ์์
์ ๋ ๋ง์น ํ ์๋์ด ์๋๋์ง ํ์ธ ํ์ main ๋ธ๋์น์ ๊ฐ์ธ๋ธ๋์น๋ฅผ ๋ณํฉํด์ค๋ merge๋ฅผ ์ฌ์ฉํ๋ค.
๐ "git merge (--ff) (fast-foward Merge)"
์ผ๋ฐ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ Merge ๋ฐฉ์์ด๋ค.
๊ฐ ์ํฉ์ ๋ฐ๋ผ Fast-forward, Recursive ๋ฐฉ์์ผ๋ก ๋ณํฉ๋๋ฉฐ Fast-forward๋ ์๋ก์ด ์ปค๋ฐ ๋ฉ์์ง ์์ด ์ปค๋ฐ ๋ด์ฉ์ด ์ ์ฉ๋๋ฉฐ Recursive๋ ํฉ๋ณํ ๋ ์๋ก์ด ์ปค๋ฐ ๋ฉ์์ง์ ํจ๊ป ์ปค๋ฐ ๋ด์ฉ์ด ์ ์ฉ๋๋ ๋ฐฉ์์ด๋ค.
์ฝ๊ฒ ๋งํด ์ ์ปค๋ฐ์ ๋ง๋ค์ง ์๊ณ ๋ณํฉํ๋ ค๋ ์ปค๋ฐ์ ๊ฐ๋ฅดํค๋ ํน์ง์ด์๋ค.
๐ก Merge์ ์ฅ์ :
์ด๋ค ๋ธ๋์น์์ ์ด๋ค ์ปค๋ฐ์ด ์งํ๋์ด ์ด๋ป๊ฒ ๋จธ์ง ๋์๋์ง์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ค.
๐ Merge์ ๋จ์ :
๋๋ฌด ์์ธํ๊ฒ ํ์คํ ๋ฆฌ๊ฐ ๋จ๊ธฐ ๋๋ฌธ์ ๋ธ๋์น์ ๊ฐ์๊ฐ ๋ง์์ง๊ฑฐ๋ ๋จธ์ง ํ์๊ฐ ์ฆ์์ง์๋ก ํ์คํ ๋ฆฌ ๊ทธ๋ํ์ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ค๋ ๊ฒ์ด๋ค.
๐ "git merge --squash <๋ถ๊ธฐ๋ ๋ธ๋์น๋ช
>"
๋ถ๊ธฐ๋ ๋ธ๋์น์์ ์ปค๋ฐ์ด ์ด๋ฃจ์ด์ง๊ณ ์ปค๋ฐ๋ ๋ด์ฉ์ main ๋ธ๋์น๋ก ๊ฐ์ ธ์ ์๋ก์ด ์ปค๋ฐ์ ๋ง๋ค์ด๋ด๊ณ ๋ธ๋์น๋ฅผ ์์ ๋ธ๋์น ์ปค๋ฐ๋ค์ ์ญ์ ํ๋ ๋ณํฉ ๋ฐฉ์์ ๋งํ๋ค. ํน์ ๊ธฐ๋ฅ์ ๋ง๋ค๊ณ ๋ค๋ฅธ ๊ณต๊ฐ์ ์ ์ฅํ๊ณ ์ถ์ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
๐ Rebase and Merge
git rebase <base ๋ธ๋์น๋ช
>
git checkout <base ๋ธ๋์น๋ช
>
git merge <๋ถ๊ธฐ๋ ๋ธ๋์น๋ช
>
์ปค๋ฐ ๋ด์ฉ์ Base๊ฐ ๋๋ ๋ธ๋์น์ ์ฌ๋ฐฐ์นํ๊ณ ์ถ๊ฐ๋ก ์ปค๋ฐ ๋ฉ์์ง ์์ด ๋ณํฉ์ ์งํํ๋ ๋ฐฉ์์ด๋ค.
๊ฐ๊ฒฐํ๊ฒ ์ฝ๋๋ฅผ ์ ์งํ๊ณ ์ถ์ ์ํฉ์ผ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
๐ ์ถฉ๋ ์๋๋๋ก ํด์ฃผ๋ ๋ช ๋ น์ด
๋์ ๋ธ๋์น๋ก ์ด๋
git checkout [๋์๋ธ๋์น]
๋์ ๋ธ๋ฐ์น์ ๋ก์ปฌ ์ต์ ํ
git pull origin [๋์๋ธ๋์น]
๋ค์ ๋ด ์์
๋ธ๋์น๋ก ์ด๋
git checkout {์์
๋ธ๋์น}
๋จธ์ง ์์ฒญ
git merge [๋์๋ธ๋์น]
์์ ํ, add, commit, push ์งํ
๐๐ป Refrence
branch
- Git Flow ๋ธ๋์น ์ ๋ต์ ๋ํด ์ค๋ช ํด ์ฃผ์ธ์.
๋ธ๋์น ๊ด๋ฆฌ๋ฅผ ์ํด ํ์ ํ๋ ์ฌ๋๋ค๋ผ๋ฆฌ ๋ชจ์ฌ ์ ๋ต์ ๊ตฌ์ฑํ ๋ฐฉ๋ฒ๋ก ์ด๋ค.
Git Flow ๋ฐฉ๋ฒ๋ก ์๋ ๊ฐ๊ฐ์ ๋ธ๋์น ๋ช ์นญ๊ณผ ๊ฐ ๋ธ๋์น๋ง๋ค ์ญํ ์ด ์๋ค.
-- Main branch --
๐ master : ๊ธฐ์ค์ด ๋๋ ๋ธ๋์น๋ก ์ ํ์ ๋ฐฐํฌํ๋ ๋ธ๋์น
๐ develop : ๊ฐ๋ฐ ๋ธ๋์น๋ก ๊ฐ๋ฐ์๋ค์ด ์ด ๋ธ๋์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ์ ์์
ํ ๊ธฐ๋ฅ๋ค์ Merge
-----------------------------------------------------------------------------------------
-- Support branch --
๐ feature: ๋จ์ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ ๋ธ๋์น๋ก ๊ธฐ๋ฅ ๊ฐ๋ฐ์ด ์๋ฃ๋๋ฉด develop ๋ธ๋์น์ Merge
๐ release: ๋ค์๋ฐฐํฌ๋ฅผ ์ํด ๊ธฐ๋ฅ์ ๋ฌธ์ ๊ฐ ์๋์ง ํ์ง์ฒดํฌ(QA) ์ฉ๋์ ๋ธ๋์น
๐ hotfix: master ๋ธ๋์น๋ก ๋ฐฐํฌ๋ฅผ ํ๋๋ฐ ๋ฒ๊ทธ๊ฐ ์๊ฒผ์ ๋ ๊ธด๊ธ ์์ ํ๋ ๋ธ๋์น
๐ support: ๋ฒ์ ํธํ์ฑ์ ์ํ ๋ธ๋์น
Main branch๋ ์ค์ํ ๋ธ๋์น์ด๋ค.
Support branch๋ ์ํฉ์ ๋ฐ๋ผ ํ์์ ์ํด ์ฌ์ฉ ๋๋ ๋ธ๋์น์ด๋ค.
๐ก branch๋ฅผ mergeํ ๋ ํญ์ -no-ff ์ต์ ์ ๋ถ์ฌ branch์ ๋ํ ๊ธฐ๋ก์ด ์ฌ๋ผ์ง๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๊ฒ์ ์์น์ผ๋ก ํ๋ค.
์ฐ์ํํ์ ๋ค ๊ธฐ์ ๋ธ๋ก๊ทธ (์ฐ๋ฆฐ Git-flow๋ฅผ ์ฌ์ฉํ๊ณ ์์ด์)
master ๋ธ๋์น์์ develop ๋ธ๋์น๋ฅผ ๋ถ๊ธฐํฉ๋๋ค.
๊ฐ๋ฐ์๋ค์ develop ๋ธ๋์น์ ์์ ๋กญ๊ฒ ์ปค๋ฐ์ ํฉ๋๋ค.
๊ธฐ๋ฅ ๊ตฌํ์ด ์๋ ๊ฒฝ์ฐ develop ๋ธ๋์น์์ feature-* ๋ธ๋์น๋ฅผ ๋ถ๊ธฐํฉ๋๋ค.
๋ฐฐํฌ๋ฅผ ์ค๋นํ๊ธฐ ์ํด develop ๋ธ๋์น์์ release-* ๋ธ๋์น๋ฅผ ๋ถ๊ธฐํฉ๋๋ค.
ํ
์คํธ๋ฅผ ์งํํ๋ฉด์ ๋ฐ์ํ๋ ๋ฒ๊ทธ ์์ ์ release-* ๋ธ๋์น์ ์ง์ ๋ฐ์ํฉ๋๋ค.
ํ
์คํธ๊ฐ ์๋ฃ๋๋ฉด release ๋ธ๋์น๋ฅผ master์ develop์ mergeํฉ๋๋ค.
๐๐ป Refrence