[Git] Git ๋ธ๋์น ์ ๋ต
Git ๋ธ๋์น ์ ๋ต์ด๋
๋ธ๋์น ์ ๋ต์ด๋ ์ฌ๋ฌ ๋ช
์ ํ์
์๊ฐ Git์ ๋ธ๋์น
๋ฅผ ์ฌ์ฉํด ํ๋์ ๊ณต๋ ์ ์ฅ์๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํ ์ ๋ต์ด๋ค.
๋ธ๋์น ์ ๋ต์ ์ธ์ฐ์ง ์๊ณ ๊ฐ๋ฐํ๋ฉด
- ์ฒด๊ณ ์๋ ๋ธ๋์น ์์ฑ๊ณผ ๋ณํฉ
- ์ค๊ตฌ๋๋ฐฉ ํฉ์ด์ง ์ด์์ ์ปค๋ฐ
- ๊ทธ์ ๋ฐ๋ฅธ ํ์ ์ ์ด๋ ค์
์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
๋ํ์ ์ธ ๋ธ๋์น ์ ๋ต๋ค์ธ Git Flow
์ Github Flow
๋ฅผ ์ดํด๋ณด๊ณ ์ ํ๋ค.
Git Flow
Git Flow ๋ ๋ธ๋์น๋ฅผ ํฌ๊ฒ 5๊ฐ์ง ๋ชฉ์ ์ผ๋ก ๋๋์ด ๊ฐ๋ฐํ๋ค.
master
์ต์ข ์ผ๋ก ๋ฐฐํฌ๋๋ ๋ธ๋์น. ๋ฐฐํฌ ํ ๋ฒ์ ํ๊ทธ(v1.0, v1.1 ๋ฑ) ๋ฅผ ์ถ๊ฐํ๋ค.
release
๋ฐฐํฌํ๊ธฐ ์ QA๋ฅผ ์งํํ๋ ๋ธ๋์น. develop ๋ธ๋์น์์ ์์ฑ๋๊ณ QA์ ํต๊ณผํ๋ฉด master ๋ธ๋์น์ ๋จธ์งํ๋ค. ์์ ์ฌํญ์ด ์๋ค๋ฉด master ์ develop ๋ธ๋์น์ ๋ฐ์ํ๋ค. ์ดํ ์ฌ์ฉํ์ง ์์ ๊ฒ์ด๋ผ๋ฉด ์ญ์ ํด๋ ๋ฌด๊ดํ๋ค. ๋ณดํต release-*
์ผ๋ก ๋ค์ด๋ฐํ๊ณ * ์๋ฆฌ์๋ ์ซ์๋ ๋ฒ์ ์ ๋ถ์ธ๋ค.
develop
๊ฐ๋ฐํ ๋์ ๋ฉ์ธ ๋ธ๋์น. ๊ตฌํํด์ผํ๋ ๊ธฐ๋ฅ์ด ์์ ๋ feature ๋ธ๋์น๋ฅผ ์์ฑํด ๊ฐ๋ฐํ๊ณ , ๊ตฌํ ์๋ฃ ํ develop ๋ธ๋์น๋ก ๋ณํฉํ๋ค. ๋ค์ ๋ฐฐํฌ ๋ฒ์ ๋ถ๋๊น์ง ๊ฐ๋ฐ ์๋ฃ ํ QA ํ ์คํธ๋ฅผ ์ํด release ๋ธ๋์น๋ก ๋จธ์ง๋๋ค.
feature
์ด์ ๋ฐ ๊ธฐ๋ฅ ๊ตฌํ์ ์ํด ์์ฑํ๋ ๋ธ๋์น. develop ๋ธ๋์น์์ ์์ฑํ๋ค. ๊ธฐ๋ฅ ๊ตฌํ ์๋ฃ ํ develop ๋ธ๋์น์ ๋จธ์งํ ๋ค feature ๋ธ๋์น๋ ์ญ์ ํ๋ค. ๋ณดํต feature/๊ธฐ๋ฅ๋ช
์ผ๋ก ๋ค์ด๋ฐํ๋ค.
feature ๋ธ๋์น๋ก ๋ถ๊ธฐํจ์ผ๋ก์จ ์ฌ๋ฌ ์ฌ๋์ด ํ ๋ธ๋์น๋ฅผ ๊ฑด๋๋ ค ์ถฉ๋๋ ์ผ์ด ์์ด์ ธ ๊ธฐ๋ฅ ๊ตฌํ์ ์ง์คํ ์ ์๋ค. ๋ ๊ธฐ๋ฅ ๊ตฌํ ๋์ค ์ด์ ๋ฒ์ ์ผ๋ก ๋๋์๊ฐ์ผํ ์ผ์ด ์๊ฒผ์ ๋ develop ๋ธ๋์น๋ฅผ ๋ค์ ๋ฐ์ ํด๊ฒฐํ ์ ์๋ค.
hotfix
๋ฐฐํฌ ํ release ๋ธ๋์น์์ ๋ฏธ์ฒ ๋ฐ๊ฒฌํ์ง ๋ชปํ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํด ๊ธด๊ธํ ์์ ํด์ผํ ๋ ์์ฑํ๋ ๋ธ๋์น. master ์์ ์์ฑํ๊ณ ์์ ํ master ์ develop ๋ธ๋์น์ ๋ฐ์ํ๊ณ hotfix ๋ธ๋์น๋ ์ญ์ ํ๋ค. ๋ณดํต hotfix-*
๋ก ๋ค์ด๋ฐํ๊ณ * ์๋ฆฌ์๋ ์ซ์๋ ๋ฒ์ ์ ๋ถ์ธ๋ค.
hotfix ๋ธ๋์น๋ก ๋ถ๊ธฐํจ์ผ๋ก์จ ๋ฒ๊ทธ ์์ ์ค์๋ ๊ฐ๋ฐ์๋ค์ develop ๋ธ๋์น์์ ์ํฅ ์์ด ๊ฐ๋ฐํ ์ ์๋ค.
- ๋งจ ์ฒ์
master
๋ธ๋์น๋ฅผ ์์ฑํ๋ค. - ๋ฒ์ 0.1(์ด๊ธฐ ์ํ) ๊ฐ๋ฐ์ ์ํด
develop
๋ธ๋์น๋ฅผ ์์ฑํ๋ค.develop
๋ธ๋์น์๋ ๋ฒ๊ทธ ์์ ์ปค๋ฐ์ด ์์๋ก ์ถ๊ฐ๋๋ค. - ๊ธฐ๋ฅ ๊ตฌํ์ ํด์ผํ ๊ฒฝ์ฐ
develop
๋ธ๋์น์์feature
๋ธ๋์น๋ฅผ ์์ฑํด ๋ถ๊ธฐํ๋ค. - ๊ตฌํ ์๋ฃ๋
feature
๋ธ๋์น๋ ๋๋ฃ ํน์ ๊ฒํ ์์๊ฒ ๊ฒํ ํdevelop
๋ธ๋์น๋ก ๋จธ์ง๋๋ค. - ๋ค์ ๋ฆด๋ฆฌ์ฆ์ ๋ชจ๋ ๊ธฐ๋ฅ ๊ตฌํ์ด ์๋ฃ๋๋ฉด
develop
๋ธ๋์น์ ๋ด์ฉ์release
๋ธ๋์น๋ก ๋จธ์งํ๋ค. release
๋ธ๋์น์ ๋ฒ๊ทธ ์์ ์ปค๋ฐ์ด ์ถ๊ฐ๋๊ณ , ๋ฒ๊ทธ ์์ ์ด ์๋ฃ๋๋ฉดdevelop
๋ธ๋์น์master
๋ธ๋์น์ ๋จธ์งํ๋ค.master
๋ธ๋์น๋ ๋ฐ์๋ ๋ด์ฉ์ ๋ฒ์ ํ๊ทธ๋ฅผ ๋ฌ์ ๋ฐฐํฌํ๋ค. (version +1)- ๋ฐฐํฌ ํ ๋ฐ๊ฒฌ๋ ๋ฒ๊ทธ๋ ๊ธด๊ธ ์์ ์ ์ํด
hotfix
๋ธ๋์น๋ฅผ ์์ฑํด ์์ ํ๋ค. hotfix
๋ธ๋์น์์ ์์ ์ด ๋๋๋ฉดdevelop
๋ธ๋์น์master
๋ธ๋์น์ ๋ฐ์ํ๊ณ ๋ฒ์ ํ๊ทธ๋ฅผ ๋ฌ์ ๋ฐฐํฌํ๋ค. (version +0.1)
Git Flow ์ ๋ต์ ๋ฐฐํฌ, ํ
์คํธ, ๊ฐ๋ฐ, ๊ธฐ๋ฅ๊ตฌํ, ๋ฒ๊ทธ์์ ๋ฑ์ ํ์คํ ๋ถ๋ฆฌํ์ฌ ํฐ ํ๋ก์ ํธ์ ์ ํฉํ ์ ๋ต์ด๋ค. ๊ทธ๋ฌ๋ ๊ด๋ฆฌํ ๋ธ๋์น๊ฐ ์๋์ ์ผ๋ก ๋ง์ ์ , master ์ release ๋ธ๋์น์ ๊ฒฝ๊ณ๊ฐ ๋ชจํธํ ์ ๋ฑ์ ์ด์ ๋ก Github ๋ ์๊ท๋ชจ ํ๋ก์ ํธ์ ์ ์ฉํ๊ธฐ์ ๋ณต์กํ๋ค. ์ด์ Git Flow ๋ฅผ ๊ฐํธํํ Github Flow
์ ๋ต์ด ๋์๋ค.
Github Flow
์๊ท๋ชจ ํ๋ก์ ํธ, ๋ฐฐํฌ์๋ํ๊ฐ ๋ Github ๋ฑ์ ํ๋ก์ ํธ์ Git Flow ๋ฅผ ์ ์ฉํ๊ธฐ ๋ณต์กํด ๊ทธ ํ๋ฆ์ ๊ฐํธํํ Git ๋ธ๋์น ์ ๋ต์ด๋ค.
master
๋ธ๋์น๋ฅผ ๋ฉ์ธ์ผ๋ก ๋๊ณ ๊ธฐ๋ฅ ๊ตฌํ, ๋ฒ๊ทธ ์์ ๋ฑ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ชจ๋ master ๋ธ๋์น์ ๋จธ์งํ๋ค.
ํต์ฌ์ ๋จธ์งํ๊ธฐ ์ pull request
๋ฅผ ํตํ ์ฝ๋ ๋ฆฌ๋ทฐ๋ก ๋ฌธ์ ์ฌํญ์ ๊ผผ๊ผผํ ํ์ธํ๊ณ ๋ฐฐํฌ ์ ๋ผ์ด๋ธ ์๋ฒ์์ ํ
์คํธํ๋ ๊ฒ, ๋จธ์ง ํ ๋ฐฐํฌ๊ฐ ์๋์ผ๋ก ์ด๋ฃจ์ด์ง๋ ๊ฒ์ด๋ค.
master
๋ธ๋์น๋ฅผ ์์ฑํ๋ค.- ๊ธฐ๋ฅ์ ๊ตฌํํด์ผํ๊ฑฐ๋ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๋ฉด
์ด์
๋ฅผ ์์ฑํ๋ค. - ๊ฐ๋ฐ์๋ค์ ์ด์ ํด๊ฒฐ์ ์ํด
feature
๋ธ๋์น๋ฅผ ์์ฑํ๊ณ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์์ธํ ๋จ๊ธด๋ค. ๋ ๋ก์ปฌ ์์ ๋ด์ฉ์ด ๋ ์๊ฐ๊ฑฐ๋ ์ด์ ๋ด์ฉ์ผ๋ก ๋์๊ฐ ์ผ์ด ์์ ๋๋ฅผ ๋๋นํ์ฌ ์๊ฒฉ ๋ธ๋์น์ ์์๋กpush
ํด์ค๋ค. - ๊ธฐ๋ฅ ๊ตฌํ ํน์ ๋ฒ๊ทธ ์์ ์ด ์๋ฃ๋๋ฉด
pull request
๋ฅผ ๋ ๋ฆฐ๋ค. ํ์๋ค ํน์ ๊ฒํ ์๋ pull request ๋ฅผ ๋ณด๊ณ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํ๋ค. release ๋ธ๋์น๊ฐ ์์ผ๋ฏ๋ก ๊ผผ๊ผผํ ํผ๋๋ฐฑํด์ผ ํ๋ค. - ๋ฆฌ๋ทฐ๊ฐ ๋๋๋ฉด ๋จธ์งํ๊ธฐ ์ ๋ผ์ด๋ธ ์๋ฒ ํน์ ํ ์คํธ ์๋ฒ์์ ์ต์ข ํ ์คํธ๋ฅผ ์งํํ๋ค. ๋ฐฐํฌ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด master ๋ธ๋์น์ ๋ด์ฉ์ผ๋ก ๋ค์ ๋ฐฐํฌํ๋ค.
- ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ํ์ธํ์ผ๋
master
๋ธ๋์น๋ก ๋จธ์งํ๋ค. ์ด๋ ๋ฐฐํฌ๋ ์๋์ผ๋ก ์ฆ์ ๋ฐฐํฌ๋์ด์ผ ํ๋ค.
Github Flow๋ ๊ด๋ฆฌํ ๋ธ๋์น๊ฐ ์ ์ด ์ ์ฉํ๊ธฐ ์ฝ์ง๋ง ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด ์น๋ช ์ ์ธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๋ฐ๋ผ์ ์์๋ก ๋ฐฐํฌ๋์ด์ผ ํ๋ ์๊ท๋ชจ ํ๋ก์ ํธ์ ์ ํฉํ๋ค.