๐ Chapter 3: Git ๋ธ๋์น
๐ฆ ๋ธ๋์น๋ ๋ฌด์์ธ๊ฐโ
๐ฃ ์ ๋ธ๋์น ์์ฑํ๊ธฐโ
git branch
๋ช
๋ น์ผ๋ก testing
๋ธ๋์น ์์ฑ
> git branch testing
์๋ก ๋ง๋ ๋ธ๋์น๋ ์ง๊ธ ์์ ํ๊ณ ์๋ ๋ง์ง๋ง ์ปค๋ฐ์ ๊ฐ๋ฆฌํจ๋ค.
์ง๊ธ ์์
์ค์ด ๋ธ๋์น๊ฐ ๋ฌด์์ธ์ง Git์ ์ด๋ป๊ฒ ํ์
ํ ๊น. ๋ค๋ฅธ ๋ฒ์ ๊ด๋ฆฌ ์์คํ
๊ณผ๋ ๋ฌ๋ฆฌ Git์ HEAD
๋ผ๋ ํน๋ณํ ํฌ์ธํฐ๊ฐ ์๋ค. ์ด ํฌ์ธํฐ๋ ์ง๊ธ ์์
ํ๋ ๋ก์ปฌ ๋ธ๋์น๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ๋ธ๋์น๋ฅผ ์๋ก ๋ง๋ค์์ง๋ง, Git์ ์์ง master
๋ธ๋์น๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๋ค. git branch
๋ช
๋ น์ ๋ธ๋์น๋ฅผ ๋ง๋ค๊ธฐ๋ง ํ๊ณ ๋ธ๋์น๋ฅผ ์ฎ๊ธฐ์ง ์๋๋ค.
๐ฃ ๋ธ๋์น ์ด๋ํ๊ธฐโ
git checkout
๋ช
๋ น์ผ๋ก ๋ค๋ฅธ ๋ธ๋์น๋ก ์ด๋ํ ์ ์๋ค. ํ๋ฒ testing
๋ธ๋์น๋ก ๋ฐ๊ฟ๋ณด์.
> git checkout testing
์ด๋ ๊ฒ ํ๋ฉด HEAD
๋ testing
๋ธ๋์น๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
์์ผ๋ก ์ปค๋ฐ์ ํ๋ฉด ๋ค๋ฅธ ๋ธ๋์น์ ์์
๋ค๊ณผ ๋ณ๊ฐ๋ก ์งํ๋๊ธฐ ๋๋ฌธ์ testing
๋ธ๋์น์์ ์์๋ก ์์
ํ๊ณ ์๋ master
๋ธ๋์น๋ก ๋์์์ ํ๋ ์ผ์ ๊ณ์ํ ์ ์๋ค.
๋ธ๋์น๋ฅผ ์ด๋ํ๋ฉด ์ํน ๋๋ ํฐ๋ฆฌ์ ํ์ผ์ด ๋ณ๊ฒฝ๋๋ค๋ ์ ์ ๊ธฐ์ตํด๋์ด์ผ ํ๋ค. ์ด์ ์ ์์ ํ๋ ๋ธ๋์น๋ก ์ด๋ํ๋ฉด ์ํน ๋๋ ํฐ๋ฆฌ์ ํ์ผ์ ๊ทธ ๋ธ๋์น์์ ๊ฐ์ฅ ๋ง์ง๋ง์ผ๋ก ํ๋ ์์ ๋ด์ฉ์ผ๋ก ๋ณ๊ฒฝ๋๋ค. ํ์ผ ๋ณ๊ฒฝ ์ ๋ฌธ์ ๊ฐ ์์ด ๋ธ๋์น๋ฅผ ์ด๋์ํค๋ ๊ฒ ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ Git์ ๋ธ๋์น ์ด๋ ๋ช ๋ น์ ์ํํ์ง ์๋๋ค.
ํ๋ก์ ํธ ํ์คํ ๋ฆฌ๋ ๋ถ๋ฆฌ๋ผ ์งํํ๋ค. ์ฐ๋ฆฌ๋ ๋ธ๋์น๋ฅผ ํ๋ ๋ง๋ค์ด ๊ทธ ๋ธ๋์น์์ ์ผ์ ์ข ํ๊ณ , ๋ค์ ์๋ ๋ธ๋์น๋ก ๋๋์์์ ๋ค๋ฅธ ์ผ์ ํ๋ค. ๋ ์์ ๋ด์ฉ์ ์๋ก ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ ๋ธ๋์น์ ์กด์ฌํ๋ค. ์ปค๋ฐ ์ฌ์ด๋ฅผ ์์ ๋กญ๊ฒ ์ด๋ํ๋ค๊ฐ ๋ ๊ฐ ๋๋ฉด ๋ ๋ธ๋์น๋ฅผ Mergeํ๋ค.
์ค์ ๋ก Git์ ๋ธ๋์น๋ ์ด๋ค ํ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ 40๊ธ์์ SHA-1 ์ฒดํฌ์ฌ ํ์ผ์ ๋ถ๊ณผํ๊ธฐ ๋๋ฌธ์ ๋ง๋ค๊ธฐ๋ ์ฝ๊ณ ์ง์ฐ๊ธฐ๋ ์ฝ๋ค. ์๋ก ๋ธ๋์น๋ฅผ ํ๋ ๋ง๋๋ ๊ฒ์ 41๋ฐ์ดํธ ํฌ๊ธฐ์ ํ์ผ์ ํ๋ ๋ง๋๋ ๊ฒ์ ๋ถ๊ณผํ๋ค.
์ปค๋ฐ์ ํ ๋๋ง๋ค ์ด์ ์ปค๋ฐ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ Mergeํ ๋ ์ด๋์๋ถํฐ ํฉ์ณ์ผ ํ๋์ง ์๋ค.
๐ฆ ๋ธ๋์น์ Merge์ ๊ธฐ์ดโ
- ์์ ์ค์ธ ์น์ฌ์ดํธ๊ฐ ์๋ค.
- ์๋ก์ด ์ด์๋ฅผ ์ฒ๋ฆฌํ ์ Branch๋ฅผ ํ๋ ์์ฑํ๋ค.
- ์๋ก ๋ง๋๋ Branch์์ ์์ ์ ์งํํ๋ค.
์ด๋ ์ค์ํ ๋ฌธ์ ๊ฐ ์๊ฒจ์ ๊ทธ๊ฒ์ ํด๊ฒฐํ๋ Hotfix๋ฅผ ๋จผ์ ๋ง๋ค์ด์ผ ํ๋ค. ๊ทธ๋ฌ๋ฉด ์๋์ ๊ฐ์ด ํ ์ ์๋ค.
- ์๋ก์ด ์ด์๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ด์ ์ ์ด์ ๋ธ๋์น๋ก ์ด๋ํ๋ค.
- Hotfix ๋ธ๋์น๋ฅผ ์๋ก ํ๋ ์์ฑํ๋ค.
- ์์ ํ Hotfix ํ ์คํธ๋ฅผ ๋ง์น๊ณ ์ด์ ๋ธ๋์น๋ก Mergeํ๋ค.
- ๋ค์ ์์ ํ๋ ๋ธ๋์น๋ก ์ฎ๊ฒจ๊ฐ์ ํ๋ ์ผ์ ์งํํ๋ค.
๐ฃ ๋ธ๋์น์ ๊ธฐ์ดโ
๋ธ๋์น๋ฅผ ์ด๋ํ๋ ค๋ฉด ํด์ผ ํ ์ผ์ด ์๋ค. ์์ง ์ปค๋ฐํ์ง ์์ ํ์ผ์ด Checkoutํ ๋ธ๋์น์ ์ถฉ๋ ๋๋ฉด ๋ธ๋์น๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค. ๋ธ๋์น๋ฅผ ๋ณ๊ฒฝํ ๋์๋ ์ํน ๋๋ ํฐ๋ฆฌ๋ฅผ ์ ๋ฆฌํ๋ ๊ฒ์ด ์ข๋ค. ์์
ํ๋ ๊ฒ์ ๋ชจ๋ ์ปค๋ฐํ๊ณ master
๋ธ๋์น๋ก ์ฎ๊ธด๋ค.
Mergeํ ๋ธ๋์น๊ฐ ๊ฐ๋ฆฌํค๋ ์ปค๋ฐ์ด ํ ๋ธ๋์น ์ปค๋ฐ์ Upstream ๋ธ๋์น์ด๊ธฐ ๋๋ฌธ์ master ๋ธ๋์น ํฌ์ธํฐ๋ Merge ๊ณผ์ ์์ด ๊ทธ์ ์ต์ ์ปค๋ฐ์ผ๋ก ์ด๋ํ๋ค. ์ด๋ฐ Merge ๋ฐฉ์์ Fast Forward
๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๋ค์ ๋งํด A ๋ธ๋์น์์ ๋ค๋ฅธ B ๋ธ๋์น๋ฅผ Mergeํ ๋ B ๋ธ๋์น๊ฐ A ๋ธ๋์น ์ดํ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๊ณ ์์ผ๋ฉด ๊ทธ์ A ๋ธ๋์น๊ฐ B ๋ธ๋์น์ ๋์ผํ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋๋ก ์ด๋์ํฌ ๋ฟ์ด๋ค.
๋ ์ด์ ํ์์๋ hotfix
๋ธ๋์น๋ ์ญ์ ํ๋ค. git branch
๋ช
๋ น์ด์ -d
์ต์
์ ์ฃผ๊ณ ๋ธ๋์น๋ฅผ ์ญ์ ํ๋ค.
> git branch -d hotfix