Git tool
์ง๊ธ๊น์ง ์ผ์์ ์ผ๋ก ์์ฃผ ์ฌ์ฉํ๋ ๋ช ๋ น์ด๋ค๊ณผ ๋ช ๊ฐ์ง Workflow๋ฅผ ๋ฐฐ์ ๋ค. ํ์ผ์ ์ถ์ ํ๊ณ ์ปค๋ฐํ๋ ๋ฑ์ ๊ธฐ๋ณธ์ ์ธ ๋ช ๋ น์ด๋ฟ๋ง ์๋๋ผ Staging Area๊ฐ ์ ์ข์์ง๋ ๋ฐฐ์ ๊ณ ๊ฐ๋ณ๊ฒ ํ ํฝ ๋ธ๋์น๋ฅผ ๋ง๋ค๊ณ Mergeํ๋ ๋ฐฉ๋ฒ๋ ๋ค๋ค๋ค. ์ด์ ๋ ์์ค์ฝ๋ ๊ด๋ฆฌ๋ฅผ Git ์ ์ฅ์๋ก ์ถฉ๋ถํ ํด๋ผ ์ ์์ ๊ฒ์ด๋ค.
์ด ์ฅ์์๋ ์ผ์์ ์ผ๋ก ์ฌ์ฉํ์ง๋ ์์ง๋ง ์๊ธํ ์ํฉ์์ ๋ฐ๋์ ํ์ํ Git ๋๊ตฌ๋ฅผ ์ดํด๋ณธ๋ค.
๋ฆฌ๋น์ ์กฐํํ๊ธฐ
๋ฆฌ๋น์ ํ๋๋ฅผ ์กฐํํ ์๋ ์๊ณ ๋ฒ์๋ฅผ ์ฃผ๊ณ ์ฌ๋ฌ ๊ฐ๋ฅผ ์กฐํํ ์๋ ์๋ค. ์ ์ฐ์ง ์์ง๋ง ์์๋๋๊ฒ ์ข๋ค.
๋ฆฌ๋น์ ํ๋ ๊ฐ๋ฆฌํค๊ธฐ
์ฌ๋์ ์ปค๋ฐ์ ๋ํ๋ด๋ SHA-1 ํด์ ๊ฐ์ ์ฝ๊ฒ ๊ธฐ์ตํ ์ ์๋ค. ์ด ์ ์์๋ ์ปค๋ฐ์ ํํํ๋ ๋ฐฉ๋ฒ์ ๋ช ๊ฐ์ง ์ค๋ช ํ๋ค. ์ข ๋ ์ฌ๋์ด ๊ธฐ์ตํ๊ธฐ ์ฌ์ด ๋ฐฉ๋ฒ๋ค์ด๋ค.
์งง์ SHA-1
ํด์ ๊ฐ์ ์ ๋ช ๊ธ์๋ง์ผ๋ก๋ ์ด๋ค ์ปค๋ฐ์ธ์ง ์ถฉ๋ถํ ์๋ณํ ์ ์๋ค. ์ค๋ณต๋์ง ์์ผ๋ฉด ํด์ ๊ฐ์ ์ 4์๋ง ์ฌ์ฉํด๋ ๋๋ค. ์ ์ผํ๊ธฐ๋ง ํ๋ฉด ์งง์ SHA-1 ๊ฐ์ด๋ผ๋ ๊ด์ฐฎ๋ค.
๋จผ์ git log
๋ช
๋ น์ผ๋ก ์ด๋ค ์ปค๋ฐ์ด ์๋์ง ์กฐํํ๋ค:
git show
๋ช
๋ น์ผ๋ก 1c002dd....
๋ก ์์ํ๋ ์ปค๋ฐ์ ์กฐํํ๋ค๋ฉด ์๋์ ๊ฐ์ด ์กฐํ ํ ์ ์๋ค. ๋ค์ ๋ช
๋ น์ด๋ ๋ชจ๋ ๊ฐ๋ค(๋จ ์งง์ ํด์ ๊ฐ์ด ๋ค๋ฅธ ์ปค๋ฐ๊ณผ ์ค๋ณต๋์ง ์๋ค๊ณ ๊ฐ์ ):
git log
๋ช
๋ น์ด์ --abbrev-commit
์ต์
์ ์ถ๊ฐํ๋ฉด ์งง์ ํด์ ๊ฐ์ ๋ณด์ฌ์ค๋ค. ๊ธฐ๋ณธ์ผ๋ก 7์๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ํด์ ๊ฐ์ด ์ค๋ณต๋๋ฉด ๋ ๊ธด ํด์ ๊ฐ์ ๋ณด์ฌ์ค๋ค:
๋ณดํต์ 8์์์ 10์ ๋ด์ธ๋ก๋ ์ถฉ๋ถํ๋ค. ์ด ์ ๋๋ก๋ ์ค๋ณต๋์ง ์๋๋ค. ๋๊ท๋ชจ ํ๋ก์ ํธ์ธ ๋ฆฌ๋ ์ค ์ปค๋๋ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋๋ฐ ํด์ ๊ฐ 40์ ์ค์์ 12์๋ง ์ฌ์ฉํ๋ค.
SHA-1 ํด์ ๊ฐ์ ๋ํ ๋จ์
Git์ ์ฐ๋ ์ฌ๋ ์ค์์ ๊ฐ๋ฅ์ฑ์ด ๋ฎ๊ธด ํ์ง๋ง ์ธ์ ๊ฐ SHA-1 ๊ฐ์ด ์ค๋ณต๋ ๊น ๋ด ๊ฑฑ์ ํ๋ ์ฌ๋๋ ์๋ค. ์ ๋ง ๊ทธ๋ ๊ฒ ๋๋ฉด ์ด๋ค ์ผ์ด ๋ฒ์ด์ง๊น?
์ด๋ฏธ ์๋ SHA-1 ๊ฐ์ Git ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ปค๋ฐํ๋ฉด ์๋ก์ด ๊ฐ์ฒด๋ผ๊ณ ํด๋ ์ด๋ฏธ ์ปค๋ฐํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๋ค. ๊ทธ๋์ ํด๋น SHA-1 ๊ฐ์ ์ปค๋ฐ์ Checkoutํ๋ฉด ํญ์ ์ฒ์์ ์ ์ฅํ ์ปค๋ฐ๋ง Checkout๋๋ค.
๊ทธ๋ฌ๋ ํด์ ๊ฐ์ด ์ค๋ณต๋๋ ์ผ์ ์ผ์ด๋๊ธฐ ์ด๋ ต๋ค. SHA-1 ๊ฐ์ ํฌ๊ธฐ๋ 20 ๋ฐ์ดํธ(160๋นํธ)์ด๋ค. ํด์ ๊ฐ์ด ์ค๋ณต๋ ํ๋ฅ ์ด 50%๊ฐ ๋๋ ๋ฐ ํ์ํ ๊ฐ์ฒด์ ์๋ 2^80
์ด๋ค. ์ด ์๋ 1.2 ์('์'๋ '๊ฒฝ'์ '์ต'๋ฐฐ - 10^24
)์ด๋ค(์ถฉ๋ ํ๋ฅ ์ ๊ตฌํ๋ ๊ณต์์ p=(n(n-1)/2) * (1/2^160)
์ด๋ค). ์ฆ, ์ง๊ตฌ์ ์กด์ฌํ๋ ๋ชจ๋์์ ์์ 1200์ ๊ณฑํ ์์ ๋ง๋จน๋๋ค.
์์ง๋ SHA-1 ํด์ ๊ฐ์ด ์ค๋ณต๋ ๊น ๋ด ๊ฑฑ์ ํ๋ ์ฌ๋๋ค์ ์ํด ์ข ๋ ๋ง๋ถ์ด๊ฒ ๋ค. ์ง๊ตฌ์์ ์ฝ 6.5์ต ๋ช ์ ์ธ๊ตฌ๊ฐ ๊ฐ๋ฐํ๊ณ ๊ฐ์ ๋งค์ด ๋ฆฌ๋ ์ค ์ปค๋ ํ์คํ ๋ฆฌ ์ ์ฒด์(100๋ง ๊ฐ) ๋ง๋จน๋ ๊ฐ์ฒด๋ฅผ ์์ ๋ด๊ณ ๋ฐ๋ก Pushํ๋ค๊ณ ๊ฐ์ ํ์. ์ด๋ฐ ์ํฉ์์ ํด์ ๊ฐ์ ์ถฉ๋ ๋ ํ๋ฅ ์ด 50%๊ฐ ๋๊ธฐ๊น์ง๋ 5๋ ์ด ๊ฑธ๋ฆฐ๋ค. ๊ทธ๋ฅ ์ด๋ ๋ ๋๋ฃ๊ฐ ์ ๋ถ ํ์๊ฐ์ ๋๋์๊ฒ ๋ฌผ๋ ค ์ฃฝ์ ํ๋ฅ ์ด ํจ์ฌ ๋ ๋๋ค.
๋ธ๋์น๋ก ๊ฐ๋ฆฌํค๊ธฐ
๋ธ๋์น๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ปค๋ฐ์ ๋ํ๋ด๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ด๋ค. ์ปค๋ฐ ๊ฐ์ฒด๋ SHA-1 ๊ฐ์ด ํ์ํ ๊ณณ์ด๋ฉด ๋ธ๋์น ์ด๋ฆ์ ์ฌ์ฉํ ์ ์๋ค. ๋ง์ฝ topic1
๋ธ๋์น์ ์ต๊ทผ ์ปค๋ฐ์ ๋ณด๊ณ ์ถ์ผ๋ฉด ์๋์ ๊ฐ์ด ์คํํ๋ค. topic1
๋ธ๋์น๊ฐ ca82a6d
๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ ๋ช
๋ น์ ๊ฒฐ๊ณผ๋ ๊ฐ๋ค:
๋ธ๋์น๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด์ SHA-1 ๊ฐ์ ๋ํ ๊ถ๊ธ์ฆ์ rev-parse
์ด๋ผ๋ Plumbing ๋๊ตฌ๊ฐ ํด๊ฒฐํด ์ค๋ค. _9์ฅ_์์ ์ด ๋๊ตฌ์ ๋ํด ์ข ๋ ์์ธํ ์ค๋ช
ํ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก rev-parse
์ ์ ์์ค ๋ช
๋ น์ด์ด๊ธฐ ๋๋ฌธ์ ํ์์๋ ์ ํ ํ์ํ์ง ์์ง๋ง ๊ทธ๋๋ ํ๋ฒ ์ฌ์ฉํด๋ณด๊ณ ์ด๋ค ๊ฒฐ๊ณผ๊ฐ ๋์ค๋์ง ์์ ๋์:
RefLog๋ก ๊ฐ๋ฆฌํค๊ธฐ
Git์ ์๋์ผ๋ก ๋ธ๋์น์ HEAD๊ฐ ์ง๋ ๋ช ๋ฌ ๋์์ ๊ฐ๋ฆฌ์ผฐ์๋ ์ปค๋ฐ์ ๋ชจ๋ ๊ธฐ๋กํ๋๋ฐ ์ด ๋ก๊ทธ๋ฅผ Reflog๋ผ๊ณ ๋ถ๋ฅธ๋ค.
git reflog
๋ฅผ ์คํํ๋ฉด Reflog๋ฅผ ๋ณผ ์ ์๋ค:
Git์ ๋ธ๋์น๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฒ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๊ทธ ์ ๋ณด๋ฅผ ์์ ์์ญ์ ์ ์ฅํ๋ค. ๊ทธ๋์ ์์ ์ ๋ญ ๊ฐ๋ฆฌ์ผฐ์๋์ง ํ์ธํ ์ ์๋ค. @{n}
๊ท์น์ ์ฌ์ฉํ๋ฉด ์๋์ ๊ฐ์ด HEAD๊ฐ 5๋ฒ ์ ์ ๊ฐ๋ฆฌ์ผฐ๋ ๊ฒ์ ์ ์ ์๋ค:
์์๋ฟ ์๋๋ผ ์๊ฐ๋ ๊ฐ๋ฅํ๋ค. ์ด์ ๋ ์ง์ master
๋ธ๋์น๋ฅผ ๋ณด๊ณ ์ถ์ผ๋ฉด ์๋์ ๊ฐ์ด ํ๋ค:
์ด ๋ช ๋ น์ ์ด์ master ๋ธ๋์น๊ฐ ๊ฐ๋ฆฌํค๊ณ ์๋ ๊ฒ์ด ๋ฌด์์ธ์ง ๋ณด์ฌ์ค๋ค. Reflog์ ๋จ์์๋ ๊ฒ๋ง ์กฐํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ฌด ์ค๋๋ ์ปค๋ฐ์ ์กฐํํ ์ ์๋ค.
git log -g
๋ช
๋ น์ ์ฌ์ฉํ๋ฉด git reflog
๊ฒฐ๊ณผ๋ฅผ git log
๋ช
๋ น๊ณผ ๊ฐ์ ํํ๋ก ๋ณผ ์ ์๋ค:
reflog์ ์ผ์ ๋ชจ๋ ๋ก์ปฌ์ ์ผ์ด๊ธฐ ๋๋ฌธ์ ๋ด reflog๊ฐ ๋๋ฃ์ ์ ์ฅ์์๋ ์์ ์ ์๋ค. ์ด์ ๋ง Cloneํ ์ ์ฅ์์๋ ์๋ฌด๊ฒ๋ ํ๊ฒ ์์ด์ reflog๊ฐ ํ๋๋ ์๋ค. git show HEAD@{2.months.ago}
๊ฐ์ ๋ช
๋ น์ ์ ์ด๋ ๋ ๋ฌ ์ ์ Cloneํ ์ ์ฅ์์์๋ ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋ฌ๋๊น ์ด ๋ช
๋ น์ 5๋ถ ์ ์ Cloneํ ์ ์ฅ์์ ์ฌ์ฉํ๋ฉด ์๋ฌด๊ฒ๋ ๋์ค์ง ์๋๋ค.
๊ณํต ๊ด๊ณ๋ก ๊ฐ๋ฆฌํค๊ธฐ
๊ณํต ๊ด๊ณ๋ก๋ ์ปค๋ฐ์ ํํํ ์ ์๋ค. ์ด๋ฆ ๋์ ^
๋ฅผ ๋ถ์ด๋ฉด Git์ ํด๋น ์ปค๋ฐ์ ๋ถ๋ชจ๋ฅผ ์ฐพ๋๋ค. ํ๋ก์ ํธ ํ์คํ ๋ฆฌ๊ฐ ์๋์ ๊ฐ์ ๋:
HEAD^
๋ ๋ฐ๋ก "HEAD์ ๋ถ๋ชจ"๋ฅผ ์๋ฏธํ๋ฏ๋ก ๋ฐ๋ก ์ด์ ์ปค๋ฐ์ ๋ณด์ฌ์ค๋ค:
^
๋ค์ ์ซ์๋ ์ฌ์ฉํ ์ ์๋ค. ์๋ฅผ ๋ค์ด d921970^2
๋ "d921970์ ๋ ๋ฒ์งธ ๋ถ๋ชจ"๋ฅผ ์๋ฏธํ๊ธฐ์ ๋ ๋ฒ์งธ ๋ถ๋ชจ๊ฐ ์๋ Merge ์ปค๋ฐ์๋ง ์ฌ์ฉํ ์ ์๋ค. ์ฒซ ๋ฒ์งธ ๋ถ๋ชจ๋ Mergeํ ๋ Checkoutํ๋ ๋ธ๋์น๋ฅผ ๋งํ๊ณ ๋ ๋ฒ์งธ ๋ถ๋ชจ๋ Mergeํ ๋์ ๋ธ๋์น๋ฅผ ์๋ฏธํ๋ค.
๊ณํต์ ํํํ๋ ๋ฐฉ๋ฒ์ผ๋ก ~
๋ผ๋ ๊ฒ๋ ์๋ค. HEAD~
์ HEAD^
๋ ๋๊ฐ์ด ์ฒซ ๋ฒ์งธ ๋ถ๋ชจ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ํ์ง๋ง ๊ทธ ๋ค์ ์ซ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌ๋ผ์ง๋ค. HEAD~2
๋ ๋ช
๋ น์ ์คํํ ์์ ์ "์ฒซ ๋ฒ์งธ ๋ถ๋ชจ์ ์ฒซ ๋ฒ์งธ ๋ถ๋ชจ", ์ฆ "์กฐ๋ถ๋ชจ"๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ์์ ์์ ์์ HEAD~3
์ ์๋์ ๊ฐ๋ค:
์ด ๊ฒ์ HEAD^^^
์ ๊ฐ์ ํํ์ด๋ค. ๋ค์ ๋งํด์ ์ฒซ ๋ฒ์งธ ๋ถ๋ชจ์ ์ฒซ ๋ฒ์งธ ๋ถ๋ชจ์ ์ฒซ ๋ฒ์งธ ๋ถ๋ชจ๋ฅผ ๋งํ๋ค:
์ด ๋ ํํ์ ๊ฐ์ด ์ฌ์ฉํ ์๋ ์๋ค. ์์ ์์ ์์ HEAD~3^2
๋ฅผ ์ฌ์ฉํ๋ฉด ์ฆ์กฐ๋ถ๋ชจ์ Merge ์ปค๋ฐ์ ๋ ๋ฒ์งธ ๋ถ๋ชจ๋ฅผ ์กฐํํ๋ค.
๋ฒ์๋ก ์ปค๋ฐ ๊ฐ๋ฆฌํค๊ธฐ
์ปค๋ฐ์ ํ๋์ฉ ์กฐํํ ์๋ ์์ง๋ง, ๋ฒ์๋ฅผ ์ฃผ๊ณ ์ฌ๋ฌ ์ปค๋ฐ์ ํ๊บผ๋ฒ์ ์กฐํํ ์๋ ์๋ค. ๋ฒ์์ ์ฃผ๊ณ ์กฐํํ๋ฉด ๋ธ๋์น๋ฅผ ๊ด๋ฆฌํ ๋ ์ ์ฉํ๋ค. ๋ธ๋์น๊ฐ ์๋นํ ๋ง๊ณ "์ ์์ง๋ ์ฃผ ๋ธ๋์น์ Merge๊ฐ ์๋ ๋ธ๋์น๋ค์ ๋ฌด์์ ๋ํ ๋ธ๋์น์ผ๊น?"๋ผ๋ ์๋ฌธ์ด ๋ค๋ฉด ๋ฒ์๋ฅผ ์ฃผ๊ณ ์ด๋ค ๋ธ๋์น์ธ์ง ์ฝ๊ฒ ์์๋ณผ ์ ์๋ค.
Double Dot
๋ฒ์๋ฅผ ํํํ๋ ๋ฌธ๋ฒ์ผ๋ก Double Dot(..)์ ๋ง์ด ์ด๋ค. Double Dot์ ํ์ชฝ์๋ ์๊ณ ๋ค๋ฅธ ์ชฝ์๋ ์๋ ์ปค๋ฐ์ด ๋ฌด์์ธ์ง Git์๊ฒ ๋ฌผ์ด๋ณด๋ ๊ฒ์ด๋ค. ์๋ค ๋ค์ด ๊ทธ๋ฆผ 6-1๊ณผ ๊ฐ์ ์ปค๋ฐ ํ์คํ ๋ฆฌ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์.
experiment ๋ธ๋์น์ ์ปค๋ฐ๋ค ์ค์์ ์์ง master ๋ธ๋์น์ Mergeํ์ง ์์ ๊ฒ๋ง ๋ณด๊ณ ์ถ์ผ๋ฉด master..experiment
๋ผ๊ณ ์ฌ์ฉํ๋ค. ์ด ํํ์ "master์๋ ์์ง๋ง, experiment์๋ ์๋ ์ปค๋ฐ"์ ์๋ฏธํ๋ค. ์ฌ๊ธฐ์์๋ ์ค๋ช
์ ์ฝ๊ฒ ํ๊ณ ์ ์ค์ ์กฐํ ๊ฒฐ๊ณผ๊ฐ ์๋๋ผ ๊ทธ๋ฆผ 6-1์ ๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ค:
๋ฐ๋๋ก experiment
์๋ ์๊ณ master
์๋ง ์๋ ์ปค๋ฐ์ด ๊ถ๊ธํ๋ฉด ๋ธ๋์น ์์๋ฅผ ๊ฑฐ๊พธ๋ก ์ฌ์ฉํ๋ค. experiment..master
๋ experiment
์๋ ์๊ณ master
์๋ง ์๋ ๊ฒ์ ์๋ ค์ค๋ค:
experiment
๋ธ๋์น๋ฅผ Mergeํ๊ธฐ ์ ์ ๋ฌด์์ด ๋ณ๊ฒฝ๋๋์ง ๊ถ๊ธํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฆฌ๋ชจํธ ์ ์ฅ์์ Pushํ ๋์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฐจ์ด๊ฐ ๊ถ๊ธํ๋ค. ์ด๋ ๊ฒ ๊ถ๊ธํ ์ํฉ์์ ๊ต์ฅํ ์ ์ฉํ๋ค:
์ด ๋ช
๋ น์ origin
์ ์ฅ์์ master
๋ธ๋์น์๋ ์๊ณ ํ์ฌ Checkout์ค์ธ ๋ธ๋์น์๋ง ์๋ ์ปค๋ฐ์ ๋ณด์ฌ์ค๋ค. Checkoutํ ๋ธ๋์น๊ฐ origin/master
๋ผ๋ฉด git log origin/master..HEAD
๊ฐ ๋ณด์ฌ์ฃผ๋ ์ปค๋ฐ์ด Pushํ๋ฉด ์๋ฒ์ ์ ์ก๋ ์ปค๋ฐ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ชฝ์ ๋ ํผ๋ฐ์ค๋ฅผ ์๋ตํ๋ฉด Git์ HEAD๋ผ๊ณ ๊ฐ์ ํ๋ค. git log origin/master..
๋ git log origin/master..HEAD
์ ๊ฐ๋ค.
์ธ ๊ฐ ์ด์์ ๋ ํผ๋ฐ์ค
Double Dot์ ๊ฐ๋จํ๊ณ ์ ์ฉํ๋ค. ํ์ง๋ง, ๋ ๊ฐ ์ด์์ ๋ธ๋์น์๋ ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋ฌ๋๊น ํ์ฌ ์์
์ค์ธ ๋ธ๋์น์๋ ์์ง๋ง ๋ค๋ฅธ ์ฌ๋ฌ ๋ธ๋์น์๋ ์๋ ์ปค๋ฐ์ด ๋ณด๊ณ ์ถ์ผ๋ฉด ..
์ผ๋ก๋ ํ์ธํ ์ ์๋ค. ^
๊ณผ --not
์ต์
๋ค์ ๋ธ๋์น ์ด๋ฆ์ ๋ฃ์ผ๋ฉด ๊ทธ ๋ธ๋์น์ ์๋ ์ปค๋ฐ์ ์ฐพ์์ค๋ค. ๋ค์ ๋ช
๋ น์ด๋ ๋ชจ๋ ๊ฐ์ ๋ช
๋ น์ด๋ค:
Double Dot์ผ๋ก๋ ์ธ ๊ฐ ์ด์์ ๋ ํผ๋ฐ์ค์ ์ฌ์ฉํ ์ ์์ง๋ง ์ด ์ต์
์ ๊ฐ๋ฅํ๋ค. ์๋ฅผ ๋ค์ด refA
๋ refB
์๋ ์์ง๋ง refC
์๋ ์๋ ์ปค๋ฐ์ ๋ณด๋ ค๋ฉด ๋ค์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ๋ค:
์ด ์กฐ๊ฑด์ ์ ์์ฉํ๋ฉด ์์ ์ค์ธ ๋ธ๋์น์ ๋ค๋ฅธ ๋ธ๋์น๋ฅผ ๋งค์ฐ ์์ธํ๊ฒ ๋น๊ตํ ์ ์๋ค.
Triple Dot
Triple Dot์ ์์ชฝ์ ์๋ ๋ ๋ ํผ๋ฐ์ค ์ฌ์ด์์ ๊ณตํต์ผ๋ก ๊ฐ์ง๋ ๊ฒ์ ์ ์ธํ๊ณ ์๋ก ๋ค๋ฅธ ์ปค๋ฐ๋ง ๋ณด์ฌ์ค๋ค. ๊ทธ๋ฆผ 6-1์ ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ๋ค์ ๋ณด์. ๋ง์ฝ master
์ experiment
์ ๊ณตํต๋ถ๋ถ์ ๋นผ๊ณ ๋ค๋ฅธ ์ปค๋ฐ๋ง ๋ณด๊ณ ์ถ์ผ๋ฉด ์๋์ ๊ฐ์ด ํ๋ฉด ๋๋ค:
์ฐ๋ฆฌ๊ฐ ์๋ log
๋ช
๋ น์ ๊ฒฐ๊ณผ๋ฅผ ์ต๊ทผ ๋ ์ง์์ผ๋ก ๋ณด์ฌ์ค๋ค. ์ด ์์ ์์๋ ์ปค๋ฐ์ ๋ค ๊ฐ ๋ณด์ฌ์ค๋ค.
๊ทธ๋ฆฌ๊ณ log
๋ช
๋ น์ --left-right
์ต์
์ ์ถ๊ฐํ๋ฉด ๊ฐ ์ปค๋ฐ์ด ์ด๋ ๋ธ๋์น์ ์ํ๋์ง๋ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ์ข ๋ ์ดํดํ๊ธฐ ์ฝ๋ค:
์์ ๊ฐ์ ๋ช ๋ น๋ค์ ์ฌ์ฉํ๋ฉด ์ํ๋ ์ปค๋ฐ์ ์ข ๋ ๊ผผ๊ผผํ๊ฒ ์ดํด๋ณผ ์ ์๋ค.
๋ํํ ๋ช
๋ น์ด
Git์ ๋ํํ ๋ช
๋ น์ด๋ ์ ๊ณตํด์ ์ข ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ค. ์ฌ๊ธฐ์ ์๊ฐํ๋ ๋ช ๊ฐ์ง ๋ํํ ๋ช
๋ น์ด๋ฅผ ์ด์ฉํ๋ฉด ๋ฐ๋ก ์ ๋ฌธ๊ฐ์ฒ๋ผ ๋ฅ์ํ๊ฒ ์ปค๋ฐํ ์ ์๋ค. ๋ํํ์ผ๋ก ์ปค๋ฐํ ํ์ผ์ ๊ณ ๋ฅผ ์๋ ์๊ณ ์์ ๋ ํ์ผ์ ์ผ๋ถ๋ถ๋ง ์ปค๋ฐํ ์๋ ์๋ค. ์์ ํ ํ์ผ์ด ๋งค์ฐ ๋ง๊ณ ํต์งธ๋ก ์ปค๋ฐํ์ง ์๊ณ ์ด์ ๋ณ๋ก ๋๋ ์ ์ปค๋ฐํ ๋ ์ ์ฉํ๋ค. ์ด์ ๋ณ๋ก ๋๋ ์ ์ปค๋ฐํ๋ฉด ๋๋ฃ๊ฐ ์ฝ๊ฒ ๊ฒํ ํ ์ ์๋ค. git add
๋ช
๋ น์ -i
๋ --interactive
์ต์
์ ์ฃผ๊ณ ์คํํ๋ฉด Git์ ์๋์ ๊ฐ์ ๋ํํ ๋ชจ๋๋ก ๋ค์ด๊ฐ๋ค:
์ด ๋ช
๋ น์ด๋ Staging Area์ ํ์ฌ ์ํ๊ฐ ์ด๋ป๊ณ ํ ์ ์๋ ์ผ์ด ๋ฌด์์ธ์ง ๋ณด์ฌ์ค๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก git status
๋ช
๋ น์ด ๋ณด์ฌ์ฃผ๋ ๊ฒ๊ณผ ๊ฐ์ง๋ง ์ข ๋ ๊ฐ๊ฒฐํ๊ณ ์ ๋๋ผ ์๋ค. ์ผ์ชฝ์๋ Staged ์ํ์ธ ํ์ผ๋ค์ ๋ณด์ฌ์ฃผ๊ณ ์ค๋ฅธ์ชฝ์๋ Unstaged์ธ ํ์ผ๋ค์ ๋ณด์ฌ์ค๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง Commands
๋ถ๋ถ์์๋ ํ ์ ์ผ์ด ๋ฌด์์ธ์ง ๋ณด์ฌ์ค๋ค. ํ์ผ์ Stageํ๊ณ Unstageํ๋ ๊ฒ, Untracked ์ํ์ ํ์ผ์ ์ถ๊ฐํ๋ ๊ฒ, Stageํ ํ์ผ์ diffํด๋ณด๋ ๊ฒ์ ํ ์ ์๋ค. ๊ฒ๋ค๊ฐ ์์ ํ ํ์ผ์ ์ผ๋ถ๋ถ๋ง Staging Area์ ์ถ๊ฐํ ์๋ ์๋ค.
Staging Area์ ํ์ผ ์ถ๊ฐํ๊ณ ์ถ๊ฐ ์ทจ์ํ๊ธฐ
What now>
ํ๋กฌํํธ์์ 2
๋ u
๋ฅผ(update) ์
๋ ฅํ๋ฉด Staging Area์ ์ถ๊ฐํ ์ ์๋ ํ์ผ์ ์ ๋ถ ๋ณด์ฌ์ค๋ค:
TODO์ index.html ํ์ผ์ Stageํ๋ ค๋ฉด ์๋์ ๊ฐ์ด ์ ๋ ฅํ๋ค:
*
ํ์๊ฐ ๋ถ์ ํ์ผ์ stageํ๋๋ก ์ ํํ ๊ฒ์ด๋ค. ์ ํํ๊ณ Update>>
ํ๋กฌํํธ์ ์๋ฌด๊ฒ๋ ์
๋ ฅํ์ง ์๊ณ ์ํฐ๋ฅผ ์น๋ฉด Git์ ์ ํํ ํ์ผ์ Staging Area๋ก ์ถ๊ฐํ๋ค:
์ด์ TODO์ index.html ํ์ผ์ Stageํ๊ณ simplegit.rb ํ์ผ๋ง ์์ง Unstaged ์ํ๋ก ๋จ์ ์๋ค. ์ด์ TODO ํ์ผ์ ๋ค์ Unstageํ๊ณ ์ถ์ผ๋ฉด 3
์ด๋ r
์(Revert) ์
๋ ฅํ๋ค:
๋ค์ Status๋ฅผ ์ ํํ๋ฉด TODO ํ์ผ์ด Unstaged ์ํ์ธ ๊ฒ์ ์ ์ ์๋ค:
Staged ํ์ผ์ ๋ณ๊ฒฝ๋ด์ฉ์ ๋ณด๋ ค๋ฉด 6
์ด๋ d
๋ฅผ(diff) ์
๋ ฅํ๋ค. ๊ทธ๋ฌ๋ฉด ๋จผ์ Staged ์ํ์ธ ํ์ผ์ ๋ณด์ฌ์ค๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ์ค์์ ํ์ผ ํ๋๋ฅผ ์ ํํ๋ค. ๊ทธ ๊ฒฐ๊ณผ๋ ๋ช
๋ น ์ค์์ git diff --cached
๋ผ๊ณ ์คํํ ๊ฒฐ๊ณผ์ ๊ฐ๋ค:
๋ํํ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ฉด Staging Area์ ํ์ผ์ ์ข ๋ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋ค.
ํ์ผ์ ์ผ๋ถ๋ถ๋ง Staging Area์ ์ถ๊ฐํ๊ธฐ
ํ์ผ์ ์ผ๋ถ๋ถ๋ง Staging Area์ ์ถ๊ฐํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค. ์๋ฅผ ๋ค์ด simplegit.rb ํ์ผ์ ๊ณ ์น ๋ถ๋ถ์ด ๋ ๊ตฐ๋ฐ์ด๋ค. ๊ทธ ์ค ํ๋๋ฅผ ์ถ๊ฐํ๊ณ ๋๋จธ์ง๋ ๊ทธ๋๋ก ๋๊ณ ์ถ๋ค. Git์์๋ ์ด๋ฐ ์์
๋ ๋งค์ฐ ์ฝ๊ฒ ํ ์ ์๋ค. ๋ํํ ํ๋กฌํํธ์์ 5
, p
๋ฅผ(patch) ์
๋ ฅํ๋ค. ๊ทธ๋ฌ๋ฉด Git์ ๋ถ๋ถ์ ์ผ๋ก Staging Area์ ์ถ๊ฐํ ํ์ผ์ด ์๋์ง ๋ฌป๋๋ค. ํ์ผ์ ์ ํํ๋ฉด ํ์ผ์ ํน์ ๋ถ๋ถ์ Staging Area์ ์ถ๊ฐํ ๊ฒ์ธ์ง ๋ถ๋ถ๋ณ๋ก ๊ตฌ๋ถํ์ฌ ๋ฌป๋๋ค:
์ฌ๊ธฐ์์ ?
๋ฅผ ์
๋ ฅํ๋ฉด ์ ํ ๊ฐ๋ฅํ ๋ช
๋ น์ด๋ฅผ ์ค๋ช
ํด์ค๋ค:
y
๋ n
์ ์
๋ ฅํ๋ฉด ๊ฐ ๋ถ๋ถ์ Stageํ ์ง ๋ง์ง ๊ฒฐ์ ํ ์ ์๋ค. ํ์ง๋ง, ํ์ผ์ ํต์งธ๋ก stageํ๊ฑฐ๋ ํ์ํ ๋๊น์ง ์์ ๊ทธ๋๋ก ๋จ๊ฒจ ๋๋ ๊ฒ์ด ๋ค์์ ๋ ์ ์ฉํ ์ง๋ ๋ชจ๋ฅธ๋ค. ์ด์จ๋ ํ์ผ์ ํ ๋ถ๋ถ์ Stageํ๊ณ ๋ค๋ฅธ ๋ถ๋ถ์ unstaged ์ํ๋ก ๋จ๊ฒจ๋๊ณ status ๋ช
๋ น์ผ๋ก ํ์ธํด๋ณด๋ฉด ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ๋ค:
simplegit.rb ํ์ผ์ ์ํ๋ฅผ ๋ณด์. ์ด๋ค ์ค์ Staged ์ํ์ด๊ณ ์ด๋ค ์ค์ Unstaged๋ผ๊ณ ์๋ ค์ค ๊ฒ์ด๋ค. ์ด ํ์ผ์ ๋ถ๋ถ์ ์ผ๋ก Stageํ์๋ค. ์ด์ ๋ํํ ๋ชจ๋๋ฅผ ์ข ๋ฃํ๊ณ ์ผ๋ถ๋ถ๋ง Stageํ ํ์ผ์ ์ปค๋ฐํ ์ ์๋ค.
๋์ผ๋ก ๋ํํ ์คํฌ๋ฆฝํธ๋ก๋ง ํ์ผ ์ผ๋ถ๋ถ์ Stageํ ์ ์๋ ๊ฒ์ ์๋๋ค. git add -p
๋ git add --patch
๋ก๋ ๊ฐ์ ์ผ์ ํ ์ ์๋ค.
Stashing
๋น์ ์ด ์ด๋ค ํ๋ก์ ํธ์์ ํ ๋ถ๋ถ์ ๋ด๋นํ๊ณ ์๋ค๊ณ ํ์. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์์ ๋ญ๊ฐ ์์
ํ๋ ์ผ์ด ์๊ณ ๋ค๋ฅธ ์์ฒญ์ด ๋ค์ด์์ ์ ์ ๋ธ๋์น๋ฅผ ๋ณ๊ฒฝํด์ผ ํ ์ผ์ด ์๊ฒผ๋ค๊ณ ์น์. ์์ง ์๋ฃํ์ง ์์ ์ผ์ ์ปค๋ฐํ๋ ๊ฒ์ ์ข ๊ป๋๋ฝ๋ค. ์ด๋ฐ ์ํฉ์์๋ ์ปค๋ฐํ์ง ์๊ณ ๋์ค์ ๋ค์ ๋์์์ ์์
์ ๋ค์ ํ๊ณ ์ถ์ ๊ฒ์ด๋ค. ์ด ๋ฌธ์ ๋ git stash
๋ผ๋ ๋ช
๋ น์ผ๋ก ํด๊ฒฐํ ์ ์๋ค.
Stash ๋ช ๋ น์ ์ฌ์ฉํ๋ฉด ์ํน ๋๋ ํ ๋ฆฌ์์ ์์ ํ ํ์ผ๋ง ์ ์ฅํ๋ค. Stash๋ Modified์ด๋ฉด์ Tracked ์ํ์ธ ํ์ผ๊ณผ Staging Area์ ์๋ ํ์ผ๋ค์ ๋ณด๊ดํด๋๋ ์ฅ์๋ค. ์์ง ๋๋์ง ์์ ์์ ์ฌํญ์ ์คํ์ ์ ์ ์ ์ฅํ๋ค๊ฐ ๋์ค์ ๋ค์ ์ ์ฉํ ์ ์๋ค.
ํ๋ ์ผ์ Stashํ๊ธฐ
์์ ํ๋ก์ ํธ๋ฅผ ํ๋ ์ดํด๋ณด์. ํ์ผ์ ๋ ๊ฐ ์์ ํ๊ณ ๊ทธ ์ค ํ๋๋ Staging Area์ ์ถ๊ฐํ๋ค. ๊ทธ๋ฆฌ๊ณ git status
๋ช
๋ น์ ์คํํ๋ฉด ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๋ค:
์ด์ ๋ธ๋์น๋ฅผ ๋ณ๊ฒฝํ๋ค. ์์ง ์์
์ค์ธ ํ์ผ์ ์ปค๋ฐํ ๊ฒ ์๋๋ผ์ ๋ชจ๋ Stashํ๋ค. git stash
๋ฅผ ์คํํ๋ฉด ์คํ์ ์๋ก์ด Stash๊ฐ ๋ง๋ค์ด์ง๋ค:
๋์ ์ํน ๋๋ ํ ๋ฆฌ๋ ๊นจ๋ํด์ก๋ค:
์ด์ ์๋ฌด ๋ธ๋์น๋ ๊ณจ๋ผ์ ๋ฐ๊ฟ ์ ์๋ค. ์์ ํ๋ ๊ฒ์ ์คํ์ ์ ์ฅํ๋ค. ์๋์ ๊ฐ์ด git stash list
๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฅํ Stash๋ฅผ ํ์ธํ๋ค:
Stash ๋ ๊ฐ๋ ์๋ ์์๋ ๊ฒ์ด๋ค. ๊ทธ๋์ ํ์ฌ ์ด ์ธ ๊ฐ์ Stash๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ์ด์ git stash apply
๋ฅผ ์ฌ์ฉํ์ฌ Stash๋ฅผ ์ ์ฉํ ์ ์๋ค. git stash
๋ช
๋ น์ ์คํํ๋ฉด ์ด ๋ช
๋ น์ ๋ํ ๋์๋ง์ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ํธ๋ฆฌํ๋ค. ๋ค๋ฅธ Stash๋ฅผ ๊ณ ๋ฅด๊ณ ์ถ์ผ๋ฉด Stash ์ด๋ฆ์ ์
๋ ฅํด์ผ ํ๋ค. ์ด๋ฆ์ด ์์ผ๋ฉด Git์ ๊ฐ์ฅ ์ต๊ทผ์ Stash๋ฅผ ์ ์ฉํ๋ค:
Git์ Stash์ ์ ์ฅํ ๋ ์์ ํ๋ ํ์ผ์ ๋ณต์ํด์ค๋ค. ๋ณต์ํ ๋์ ์ํน ๋๋ ํ ๋ฆฌ๋ Stashํ ๋์ ๊ทธ ๋ธ๋์น์ด๊ณ ์ํน ๋๋ ํ ๋ฆฌ๋ ๊นจ๋ํ ์ํ์๋ค. ํ์ง๋ง, ๊ผญ ๊นจ๋ํ ์ํน ๋๋ ํ ๋ฆฌ๋ Stashํ ๋์ ๊ฐ์ ๋ธ๋์น์ ์ ์ฉํด์ผ ํ๋ ๊ฒ์ ์๋๋ค. ์ด๋ค ๋ธ๋์น์์ Stashํ๊ณ ๋ค๋ฅธ ๋ธ๋์น๋ก ์ฎ๊ธฐ๊ณ ์ ๊ฑฐ๊ธฐ์ Stash๋ฅผ ๋ณต์ํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ผญ ์ํน ๋๋ ํ ๋ฆฌ๊ฐ ๊นจ๋ํ ์ํ์ผ ํ์๋ ์๋ค. ์ํน ๋๋ ํ ๋ฆฌ์ ์์ ํ๊ณ ์ปค๋ฐํ์ง ์์ ํ์ผ๋ค์ด ์์ ๋์๋ Stash๋ฅผ ์ ์ฉํ ์ ์๋ค. ๋ง์ฝ ์ถฉ๋์ด ๋๋ฉด ์๋ ค์ค๋ค.
Git์ Stash๋ฅผ ์ ์ฉํ ๋ Staged ์ํ์๋ ํ์ผ์ ์๋์ผ๋ก ๋ค์ Staged ์ํ๋ก ๋ง๋ค์ด ์ฃผ์ง ์๋๋ค. ๊ทธ๋์ git stash apply
๋ช
๋ น์ ์คํํ ๋ --index
์ต์
์ ์ฃผ์ด์ผ Staged ์ํ๊น์ง ๋ณต์ํ๋ค. ๊ทธ๋ผ ์๋ ์์
ํ๋ ์ํ๋ก ๋์์ฌ ์ ์๋ค:
apply
์ต์
์ ๋จ์ํ Stash๋ฅผ ์ ์ฉํ๋ ๊ฒ๋ฟ์ด๋ค. Stash๋ ์ฌ์ ํ ์คํ์ ๋จ์ ์๋ค. git stash drop
๋ช
๋ น์ ์ฌ์ฉํ์ฌ ํด๋น Stash๋ฅผ ์ ๊ฑฐํ๋ค:
๊ทธ๋ฆฌ๊ณ git stash pop
์ด๋ผ๋ ๋ช
๋ น๋ ์๋๋ฐ ์ด ๋ช
๋ น์ Stash๋ฅผ ์ ์ฉํ๊ณ ๋์ ๋ฐ๋ก ์คํ์์ ์ ๊ฑฐํด์ค๋ค.
Stash ๋๋๋ฆฌ๊ธฐ
Stash๋ฅผ ์ ์ฉํ๊ณ ๋์ ์์ฐจ ์ถ์ ๋์๋ ๋ค์ ๋๋๋ ค ๋์์ผ ํ๋ค. Git์ stash unapply
๊ฐ์ ๋ช
๋ น์ ์ ๊ณตํ์ง๋ ์๋๋ค. ํ์ง๋ง, Stash๋ฅผ ์ด์ฉํด์ ํจ์น๋ฅผ ๋ง๋ค๊ณ ๊ทธ๊ฒ์ ๊ฑฐ๊พธ๋ก ์ ์ฉํ ์ ์๋ค:
Stash๋ฅผ ๋ช ์ํ์ง ์์ผ๋ฉด Git์ ๊ฐ์ฅ ์ต๊ทผ์ Stash๋ฅผ ์ฌ์ฉํ๋ค:
stash-unapply
๋ผ๋ alias๋ฅผ ๋ง๋ค๊ณ ํธ๋ฆฌํ๊ฒ ํ ์๋ ์๋ค:
Stash๋ฅผ ์ ์ฉํ ๋ธ๋์น ๋ง๋ค๊ธฐ
๋ณดํต Stash์ ์ ์ฅํ๋ฉด ํ๋์ ๊ทธ๋๋ก ์ ์งํ๊ณ ๊ทธ ๋ธ๋์น์์๋ ๊ณ์ ์๋ก์ด ์ผ์ ํ๋ค. ๊ทธ๋ฌ๋ฉด ์ ์ฅํ Stash๋ฅผ ์ ์ฉํ๋ ๊ฒ์ด ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค. ์์ ํ ํ์ผ์ Stash๋ฅผ ์ ์ฉํ๋ฉด ์ถฉ๋์ด ๋ ์ ์๋ค. ์ถฉ๋์ด ๋๋ฉด ์ถฉ๋์ ํด๊ฒฐํด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ Stashํ ๊ฒ์ ๋ค์ ํ
์คํธํด์ผ ํ๋ค. git stash branch
๋ช
๋ น์ ์คํํ๋ฉด Stashํ ๋น์์ ์ปค๋ฐ์ Checkoutํ ํ ์๋ก์ด ๋ธ๋์น๋ฅผ ๋ง๋ค๊ณ ์ฌ๊ธฐ์ ์ ์ฉํ๋ค. ์ด ๋ชจ๋ ๊ฒ์ด ์ฑ๊ณตํ๋ฉด Stash๋ฅผ ์ญ์ ํ๋ค:
์ด ๋ช ๋ น์ ๋ธ๋์น๋ฅผ ์๋ก ๋ง๋ค๊ณ Stash๋ฅผ ๋ณต์ํด์ฃผ๋ ๋งค์ฐ ํธ๋ฆฌํ ๋๊ตฌ๋ค.
ํ์คํ ๋ฆฌ ๋จ์ฅํ๊ธฐ
Git์ผ๋ก ์ผํ๋ค ๋ณด๋ฉด ์ด๋ค ์ด์ ๋ก๋ ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ์์ ํด์ผ ํ ๋๊ฐ ์๋ค. ๊ฒฐ์ ์ ๋์ค์ผ๋ก ๋ฏธ๋ฃฐ ์ ์๋ ๊ฒ์ Git์ ์ฅ์ ์ด๋ค. Staging Area๊ฐ ์์ด์ ์ปค๋ฐํ ํ์ผ์ ๊ณ ๋ฅด๋ ์ผ์ ์ปค๋ฐํ๋ ์๊ฐ์ผ๋ก ๋ฏธ๋ฃฐ ์ ์๊ณ Stash ๋ช ๋ น์ผ๋ก ํ๋ ์ผ์ ๋ฏธ๋ฃฐ ์ ์๋ค. ๊ฒ๋ค๊ฐ ์ด๋ฏธ ์ปค๋ฐํ ๋ด์ฉ์ ์์ ํ ์ ์๋ค. ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ ์์ ํ ์ ์๋ค. ์ปค๋ฐ ์์๋ ๋ณ๊ฒฝํ ์ ์๊ณ ์ปค๋ฐ ๋ฉ์์ง์ ์ปค๋ฐํ ํ์ผ๋ ๋ณ๊ฒฝํ ์ ์๋ค. ์ฌ๋ฌ ๊ฐ์ ์ปค๋ฐ์ ํ๋๋ก ํฉ์น๊ฑฐ๋ ๋ฐ๋๋ก ํ๋์ ์ปค๋ฐ์ ์ฌ๋ฌ ๊ฐ๋ก ๋ถ๋ฆฌํ ์๋ ์๋ค. ์๋๋ฉด ์ปค๋ฐ ์ ์ฒด๋ฅผ ์ญ์ ํ ์๋ ์๋ค. ํ์ง๋ง, ์ด ๋ชจ๋ ๊ฒ์ ๋ค๋ฅธ ์ฌ๋๊ณผ ์ฝ๋๋ฅผ ๊ณต์ ํ๊ธฐ ์ ์ ํด์ผ ํ๋ค.
์ด ์ ์์๋ ์ฌ๋๋ค๊ณผ ์ฝ๋๋ฅผ ๊ณต์ ํ๊ธฐ ์ ์ ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ์์๊ฒ ๋จ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์ค๋ช ํ๋ค.
๋ง์ง๋ง ์ปค๋ฐ์ ์์ ํ๊ธฐ
ํ์คํ ๋ฆฌ๋ฅผ ๋จ์ฅํ๋ ์ผ ์ค์์๋ ๋ง์ง๋ง ์ปค๋ฐ์ ์์ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ์์ฃผ ํ๋ ์ผ์ด๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๊ฐ์ง๋ก ๋๋ ์ ์๋๋ฐ ํ๋๋ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์์ ํ๋ ๊ฒ์ด๊ณ ๋ค๋ฅธ ํ๋๋ ํ์ผ ๋ชฉ๋ก์ ์์ ํ๋ ๊ฒ์ด๋ค.
์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์์ ํ๋ ๋ฐฉ๋ฒ์ ๋งค์ฐ ๊ฐ๋จํ๋ค:
์ด ๋ช ๋ น์ ์๋์ผ๋ก ํ ์คํธ ํธ์ง๊ธฐ๋ฅผ ์คํ์์ผ์ ๋ง์ง๋ง ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์ด์ด์ค๋ค. ์ฌ๊ธฐ์ ๋ฉ์์ง๋ฅผ ์์ ํ๊ณ ํธ์ง๊ธฐ๋ฅผ ๋ซ์ผ๋ฉด ํธ์ง๊ธฐ๋ ์์ ํ ๋ฉ์์ง๋ก ๋ง์ง๋ง ์ปค๋ฐ์ ์์ ํ๋ค.
์ปค๋ฐํ๊ณ ๋์ ์๋ก ๋ง๋ค์๊ฑฐ๋ ๋ค์ ์์ ํ ํ์ผ์ ๋ง์ง๋ง ์ปค๋ฐ์ ํฌํจํ ์ ์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐฉ๋ฒ์ ๊ฐ๋ค. ํ์ผ์ ์์ ํ๊ณ git add
๋ช
๋ น์ผ๋ก Staging Area์ ๋ฃ๊ฑฐ๋ git rm
๋ช
๋ น์ผ๋ก ํ์ผ ์ญ์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ git commit --amend
๋ช
๋ น์ผ๋ก ์ปค๋ฐํ๋ฉด ๋๋ค. ์ด ๋ช
๋ น์ ํ Staging Area์ ๋ด์ฉ์ ์ด์ฉํด์ ์์ ํ๋ค.
์ด๋ SHA-1 ๊ฐ์ด ๋ฐ๋๊ธฐ ๋๋ฌธ์ ๊ณผ๊ฑฐ์ ์ปค๋ฐ์ ๋ณ๊ฒฝํ ๋ ์ฃผ์ํด์ผ ํ๋ค. rebase์ฒ๋ผ ์ด๋ฏธ Pushํ ์ปค๋ฐ์ ์์ ํ๋ฉด ์ ๋๋ค.
์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์ฌ๋ฌ ๊ฐ ์์ ํ๊ธฐ
์ต๊ทผ ์ปค๋ฐ์ด ์๋๋ผ ์์ ์ปค๋ฐ์ ์์ ํ๋ ค๋ฉด ๋ค๋ฅธ ๋๊ตฌ๊ฐ ํ์ํ๋ค. ํ์คํ ๋ฆฌ ์์ ์ฉ ๋๊ตฌ๋ ์์ง๋ง rebase
๋ช
๋ น์ ์ด์ฉํ์ฌ ์์ ํ ์ ์๋ค. ํ์ฌ ์์
ํ๋ ๋ธ๋์น์์ ๊ฐ ์ปค๋ฐ์ ํ๋ํ๋ ์์ ํ๋ ๊ฒ์ด ์๋๋ผ ์ด๋ ์์ ๋ถํฐ HEAD๊น์ง์ ์ปค๋ฐ์ ํ ๋ฒ์ Rebaseํ๋ค. ๋ํํ Rebase ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ปค๋ฐ์ ์ฒ๋ฆฌํ ๋๋ง๋ค ๋ฉ์ถ๋ค. ๊ทธ๋ฌ๋ฉด ๊ฐ ์ปค๋ฐ์ ๋ฉ์์ง๋ฅผ ์์ ํ๊ฑฐ๋ ํ์ผ์ ์ถ๊ฐํ๊ณ ๋ณ๊ฒฝํ๋ ๋ฑ์ ์ผ์ ์งํํ ์ ์๋ค. git rebase
๋ช
๋ น์ -i
์ต์
์ ์ถ๊ฐํ๋ฉด ๋ํํ ๋ชจ๋๋ก Rebaseํ ์ ์๋ค. ์ด๋ค ์์ ๋ถํฐ HEAD๊น์ง Rebaseํ ๊ฒ์ธ์ง ์๊ท๋จผํธ๋ก ๋๊ธฐ๋ฉด ๋๋ค.
๋ง์ง๋ง ์ปค๋ฐ ๋ฉ์์ง ์ธ ๊ฐ๋ฅผ ๋ชจ๋ ์์ ํ๊ฑฐ๋ ๊ทธ ์ค ๋ช ๊ฐ๋ฅผ ์์ ํ๋ ์๋๋ฆฌ์ค๋ฅผ ์ดํด๋ณด์. git rebase -i
์ ์๊ท๋จผํธ๋ก ํธ์งํ๋ ค๋ ๋ง์ง๋ง ์ปค๋ฐ์ ๋ถ๋ชจ๋ฅผ HEAD~2^
๋ HEAD~3
๋ก ํด์ ๋๊ธด๋ค. ๋ง์ง๋ง ์ธ ๊ฐ์ ์ปค๋ฐ์ ์์ ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ~3
์ด ์ข ๋ ๊ธฐ์ตํ๊ธฐ ์ฝ๋ค. ๊ทธ๋ ์ง๋ง, ์ค์ง์ ์ผ๋ก ๊ฐ๋ฆฌํค๊ฒ ๋๋ ๊ฒ์ ์์ ํ๋ ค๋ ์ปค๋ฐ์ ๋ถ๋ชจ์ธ ๋ค ๋ฒ์งธ ์ด์ ์ปค๋ฐ์ด๋ค.
์ด ๋ช
๋ น์ rebaseํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ฉ์์ง์ ์์ ์ฌ๋ถ์ ๊ด๊ณ์์ด HEAD~3..HEAD
๋ฒ์์ ์๋ ๋ชจ๋ ์ปค๋ฐ์ ์์ ํ๋ค. ๋ค์ ๊ฐ์กฐํ์ง๋ง ์ด๋ฏธ ์ค์์๋ฒ์ Pushํ ์ปค๋ฐ์ ์ ๋ ๊ณ ์น์ง ๋ง์์ผ ํ๋ค. Pushํ ์ปค๋ฐ์ Rebaseํ๋ฉด ๊ฒฐ๊ตญ ๊ฐ์ ๋ด์ฉ์ ๋ ๋ฒ Pushํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ด ํผ๋์ค๋ฌ์ ํ๋ค.
์คํํ๋ฉด ํ ์คํธ ํธ์ง๊ธฐ๊ฐ ์ด๋ฆฌ๊ณ ๊ทธ ์์๋ ์์ ํ๋ ค๋ ์ปค๋ฐ ๋ชฉ๋ก์ด ์ฒจ๋ถ๋๋ค:
์ด ์ปค๋ฐ์ ๋ชจ๋ log
๋ช
๋ น๊ณผ๋ ์ ๋ฐ๋์ ์์๋ก ๋์ด๋๋ค. log
๋ช
๋ น์ ์คํํ๋ฉด ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๋ค:
์ ๊ฒฐ๊ณผ์ ์ญ์์์ ๊ธฐ์ตํ์. ๋ํํ rebase๋ ์คํฌ๋ฆฝํธ์ ์ ํ ์๋ ์์๋๋ก HEAD~3
๋ถํฐ ์ ์ฉํ๊ธฐ ์์ํ๊ณ ์์์ ์๋๋ก ๊ฐ๊ฐ์ ์ปค๋ฐ์ ์์๋๋ก ์์ ํ๋ค. ์์๋๋ก ์ ์ฉํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ ์ผ ์์ ์๋ ๊ฒ์ด ์ต์ ์ด ์๋๋ผ ๊ฐ์ฅ ์ค๋๋ ๊ฒ์ด๋ค.
ํน์ ์ปค๋ฐ์์ ์คํ์ ๋ฉ์ถ๊ฒ ํ๋ ค๋ฉด ์คํฌ๋ฆฝํธ๋ฅผ ์์ ํด์ผ ํ๋ค. pick
์ด๋ผ๋ ๋จ์ด๋ฅผ edit
๋ก ์์ ํ๋ฉด ๊ทธ ์ปค๋ฐ์์ ๋ฉ์ถ๋ค. ๊ฐ์ฅ ์ค๋๋ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์์ ํ๋ ค๋ฉด ์๋์ ๊ฐ์ด ํธ์งํ๋ค:
์ ์ฅํ๊ณ ํธ์ง๊ธฐ๋ฅผ ์ข ๋ฃํ๋ฉด Git์ ๋ชฉ๋ก์ ์๋ ์ปค๋ฐ ์ค์์ ๊ฐ์ฅ ์ค๋๋ ์ปค๋ฐ์ผ๋ก ์ด๋ํ๊ณ , ์๋์ ๊ฐ์ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ณ , ๋ช ๋ น ํ๋กฌํํธ๋ฅผ ๋ณด์ฌ์ค๋ค:
์ ํํ ๋ญ ํด์ผ ํ๋์ง ์๋ ค์ค๋ค. ์๋์ ๊ฐ์ ๋ช ๋ น์ ์คํํ๊ณ :
์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์์ ํ๊ณ ํ ์คํธ ํธ์ง๊ธฐ๋ฅผ ์ข ๋ฃํ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ค:
์ด๋ ๊ฒ ๋๋จธ์ง ๋ ๊ฐ์ ์ปค๋ฐ์ ์ ์ฉํ๋ฉด ๋์ด๋ค. ๋ค๋ฅธ ๊ฒ๋ pick
์ edit
๋ก ์์ ํด์ ์ด ์์
์ ๋ช ๋ฒ์ด๋ ๋ฐ๋ณตํ ์ ์๋ค. Git์ด ๋ฉ์ถ ๋๋ง๋ค ์ปค๋ฐ์ ์์ ํ ์ ์๊ณ ์๋ฃํ ๋๊น์ง ๊ณ์ ํ ์ ์๋ค.
์ปค๋ฐ ์์ ๋ฐ๊พธ๊ธฐ
๋ํํ Rebase ๋๊ตฌ๋ก ์ปค๋ฐ ์ ์ฒด๋ฅผ ์ญ์ ํ๊ณ ์์๋ ๋ฐ๊ฟ ์ ์๋ค. "added cat-file" ์ปค๋ฐ์ ์ญ์ ํ๊ณ ๋ค๋ฅธ ๋ ์ปค๋ฐ์ ์์๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด ์ด rebase ์คํฌ๋ฆฝํธ๋ฅผ:
์๋์ ๊ฐ์ด ์์ ํ๋ค:
์์ ํ ๋ด์ฉ์ ์ ์ฅํ๊ณ ํธ์ง๊ธฐ๋ฅผ ์ข
๋ฃํ๋ฉด Git์ ๋ธ๋์น๋ฅผ ์ด ์ปค๋ฐ๋ค์ ๋ถ๋ชจ๋ก ์ด๋์ํค๊ณ ์ 310154e
์ f7f3f6d
๋ฅผ ์์๋๋ก ์ ์ฉํ๋ค. ๊ทธ๋ฌ๋ฉด ์ปค๋ฐ ์์๊ฐ ๋ณ๊ฒฝ๋๊ณ "added cat-file" ์ปค๋ฐ์ด ์ ๊ฑฐ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ปค๋ฐ ํฉ์น๊ธฐ
๋ํํ Rebase ๋ช ๋ น์ ์ด์ฉํ์ฌ ์ฌ๋ฌ ๊ฐ์ ์ปค๋ฐ์ ๊พน๊พน ๋๋ฌ์ ํ๋์ ์ปค๋ฐ์ผ๋ก ๋ง๋ค์ด ๋ฒ๋ฆด ์ ์๋ค. Rebase ์คํฌ๋ฆฝํธ์ ์๋์ผ๋ก ํฌํจ๋ ๋์๋ง์ ์ค๋ช ๋ผ ์๋ค:
"pick"์ด๋ "edit"๋ง๊ณ "squash"๋ฅผ ์ ๋ ฅํ๋ฉด Git์ ํด๋น ์ปค๋ฐ๊ณผ ๋ฐ๋ก ์ด์ ์ปค๋ฐ์ ํฉ์น ๊ฒ์ด๊ณ ์ปค๋ฐ ๋ฉ์์ง๋ Mergeํ๋ค. ๊ทธ๋์ 3๊ฐ์ ์ปค๋ฐ์ ๋ชจ๋ ํฉ์น๋ ค๋ฉด ์คํฌ๋ฆฝํธ๋ฅผ ์๋์ ๊ฐ์ด ์์ ํ๋ค:
์ ์ฅํ๊ณ ๋์ ํธ์ง๊ธฐ๋ฅผ ์ข ๋ฃํ๋ฉด Git์ 3๊ฐ์ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ Mergeํ ์ ์๋๋ก ์๋ํฐ๋ฅผ ๋ฐ๋ก ์คํํด์ค๋ค:
์ด ๋ฉ์์ง๋ฅผ ์ ์ฅํ๋ฉด 3๊ฐ์ ์ปค๋ฐ์ด ๋ชจ๋ ํฉ์ณ์ง ํ๋์ ์ปค๋ฐ๋ง ๋จ๋๋ค.
์ปค๋ฐ ๋ถ๋ฆฌํ๊ธฐ
์ปค๋ฐ์ ๋ถ๋ฆฌํ๋ค๋ ๊ฒ์ ๊ธฐ์กด ์ปค๋ฐ์ Resetํ๊ณ (ํน์ ๋๋๋ ค ๋๊ณ ) Stage๋ฅผ ์ฌ๋ฌ ๊ฐ๋ก ๋ถ๋ฆฌํ๊ณ ๋์ ๊ทธ๊ฒ์ ์ํ๋ ํ์๋งํผ ๋ค์ ์ปค๋ฐํ๋ ๊ฒ์ด๋ค. ์๋ก ๋ค์๋ ์ปค๋ฐ ์ธ ๊ฐ ์ค์์ ๊ฐ์ด๋ฐ ๊ฒ์ ๋ถ๋ฆฌํด๋ณด์. ์ด ์ปค๋ฐ์ "updated README formatting and added blame"๋ผ๋ ์ปค๋ฐ์ธ๋ฐ "updated README formatting"๊ณผ "added blame"์ผ๋ก ๋ถ๋ฆฌํด๋ณด์. rebase -i
์คํฌ๋ฆฝํธ์์ ํด๋น ์ปค๋ฐ์ "edit"๋ก ๋ณ๊ฒฝํ๋ค:
์์ ๊ฐ์ด ์์ ํ๊ณ ๋์ ์ ์ฅํ๊ณ ํธ์ง๊ธฐ๋ฅผ ์ข
๋ฃํ๋ฉด Git์ ์ ์ผ ์ค๋๋ ์ปค๋ฐ์ ๋ถ๋ชจ๋ก ์ด๋ํ๊ณ ์ f7f3f6d
๊ณผ 310154e
์ ์ฒ๋ฆฌํ๊ณ ์ฝ์ ํ๋กฌํํธ๋ฅผ ๋ณด์ฌ์ค๋ค. ์ฌ๊ธฐ์ ์ปค๋ฐ์ ํด์ ํ๋ git reset HEAD^
๋ผ๋ ๋ช
๋ น์ผ๋ก ์ปค๋ฐ์ ํด์ ํ๋ค. ๊ทธ๋ฌ๋ฉด ์์ ํ๋ ํ์ผ์ Unstaged ์ํ๊ฐ ๋๋ค. ๊ทธ๋ค์์ ํ์ผ๋ค์ Stageํ ํ ์ปค๋ฐํ๋ ์ผ์ ์ํ๋ ๋งํผ ๋ฐ๋ณตํ๊ณ ๋์ git rebase --continue
๋ผ๋ ๋ช
๋ น์ ์คํํ๋ฉด ๋จ์ Rebase์์
์ด ๋๋๋ค:
๋๋จธ์ง a5f4a0d
์ปค๋ฐ๋ ์ฒ๋ฆฌ๋๋ฉด ํ์คํ ๋ฆฌ๋ ์๋์ ๊ฐ๋ค:
๋ค์ ๊ฐ์กฐํ์ง๋ง, ๋ชฉ๋ก์ ์๋ ๋ชจ๋ ์ปค๋ฐ์ SHA-1 ๊ฐ์ ๋ณ๊ฒฝ๋๋ค. ๊ทธ๋์ ์ด๋ฏธ ์๋ฒ์ Pushํ ์ปค๋ฐ์ ์์ ํ๋ฉด ์๋๋ค.
filter-branch๋ ํฌํฌ๋ ์ธ
์์ ํด์ผ ํ๋ ์ปค๋ฐ์ด ๋๋ฌด ๋ง์์ rebase ์คํฌ๋ฆฝํธ๋ก ์์ ํ๊ธฐ ์ด๋ ค์ธ ๊ฒ ๊ฐ์ผ๋ฉด ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ๋ชจ๋ ์ปค๋ฐ์ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ด๋ค ํ์ผ์ ์ญ์ ํ๋ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์. filter-branch
๋ผ๋ ๋ช
๋ น์ผ๋ก ์์ ํ ์ ์๋๋ฐ rebase๊ฐ ์ฝ์ด๋ผ๋ฉด ์ด ๋ช
๋ น์ ํฌํฌ๋ ์ธ์ด๋ผ๊ณ ํ ์ ์๋ค. filter-branch
๋ ์ญ์ ์์ ํ๋ ค๋ ์ปค๋ฐ์ด ์ด๋ฏธ ๊ณต๊ฐ๋ผ์ ๋ค๋ฅธ ์ฌ๋๊ณผ ํจ๊ป ๊ณต์ ํ๋ ์ค์ด๋ผ๋ฉด ์ฌ์ฉํ์ง ๋ง์์ผ ํ๋ค. ํ์ง๋ง, ์ ์ฐ๋ฉด ๊ฝค ์ ์ฉํ๋ค. filter-branch
๊ฐ ์ด๋ค ๊ฒฝ์ฐ์ ์ ์ฉํ ์ง ์๋ฅผ ๋ค์ด์ ์ค๋ช
ํ๋ค.
๋ชจ๋ ์ปค๋ฐ์์ ํ์ผ์ ์ ๊ฑฐํ๊ธฐ
๊ฐ์๊ธฐ ๋๊ตฐ๊ฐ ์๊ฐ ์์ด git add .
๊ฐ์ ๋ช
๋ น์ด๋ฅผ ์คํํด ๋ฒ๋ ค์ ๊ณต๋ฃก ๋ฅ ๋ฉ์ด๋ฆฌ๊ฐ ์ปค๋ฐ๋๊ฑฐ๋ ์ค์๋ก ์ํธ๊ฐ ํฌํจ๋ ํ์ผ์ ์ปค๋ฐํด์ ์ด๋ฐ ํ์ผ๋ค์ ๋ค์ ์ญ์ ํด์ผ ํ๋ ์ํฉ์ ์ดํด๋ณด์. ์ด๋ฐ ์ํฉ์ ์๊ฐ๋ณด๋ค ์์ฃผ ๋ฐ์ํ๋ค. filter-branch
๋ ํ์คํ ๋ฆฌ ์ ์ฒด์์ ํ์ํ ๊ฒ๋ง ๊ณจ๋ผ๋ด๋ ๋ฐ ์ฌ์ฉํ๋ ๋๊ตฌ๋ค. filter-branch
์ --tree-filter
๋ผ๋ ์ต์
์ ์ฌ์ฉํ๋ฉด ํ์คํ ๋ฆฌ์์ passwords.txt๋ผ๋ ํ์ผ์ ์์ ์ ๊ฑฐํ ์ ์๋ค:
--tree-filter
์ต์
์ ํ๋ก์ ํธ๋ฅผ Checkoutํ ํ์ ๊ฐ ์ปค๋ฐ์ ๋ช
์ํ ๋ช
๋ น์ด๋ฅผ ์คํ์ํค๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์ปค๋ฐํ๋ค. ์ด ์์ ์์๋ ๊ฐ ์ค๋
์ท์ passwords.txt๋ผ๋ ํ์ผ์ด ์์ผ๋ฉด ๊ทธ ํ์ผ์ ์ญ์ ํ๋ค. ์ค์๋ก ํธ์ง๊ธฐ์ ๋ฐฑ์
ํ์ผ์ ์ปค๋ฐํ์ผ๋ฉด git filter-branch --tree-filter "find * -type f -name '*~' -delete" HEAD
๋ผ๊ณ ์คํํด์ ์ญ์ ํ ์ ์๋ค.
์ด ๋ช
๋ น์ ๋ชจ๋ ํ์ผ๊ณผ ์ปค๋ฐ์ ์ ๋ฆฌํ๊ณ ๋ธ๋์น ํฌ์ธํฐ๋ฅผ ๋ค์ ๋ณต์ํด์ค๋ค. ํ
์คํ
๋ธ๋์น์์ ์ฌ์ฉํ ๋ช
๋ น์ ์ ๊ฒํ๊ณ ๋์ master ๋ธ๋์น๋ฅผ ์ ๋ฆฌํ๋ค. ๊ทธ๋ฆฌ๊ณ filter-branch
๋ช
๋ น์ --all
์ต์
์ ์ถ๊ฐํ๋ฉด ๋ชจ๋ ๋ธ๋์น์ ์ ์ฉ๋๋ค.
ํ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฃจํธ ๋๋ ํ ๋ฆฌ๋ก ๋ง๋ค๊ธฐ
๋ค๋ฅธ VCS์์ ์ฝ๋๋ฅผ ์ํฌํธํ๋ฉด ๊ทธ VCS๋ง์ ์ํ ๋๋ ํ ๋ฆฌ๊ฐ ์์ ์ ์๋ค. SVN์์ ์ฝ๋๋ฅผ ์ํฌํธํ๋ฉด trunk, tags, branch ๋๋ ํ ๋ฆฌ๊ฐ ํฌํจ๋๋ค. ๋ชจ๋ ์ปค๋ฐ์ ๋ํด trunk
๋๋ ํ ๋ฆฌ๋ฅผ ํ๋ก์ ํธ ๋ฃจํธ ๋๋ ํ ๋ฆฌ๋ก ๋ง๋ค ๋์๋ filter-branch
๋ช
๋ น์ด ์ ์ฉํ๋ค:
์ด์ trunk
๋๋ ํ ๋ฆฌ๋ฅผ ๋ฃจํธ ๋๋ ํ ๋ฆฌ๋ก ๋ง๋ค์๋ค. Git์ ์
๋ ฅํ ๋๋ ํ ๋ฆฌ์ ๊ด๋ จ์ด ์๋ ์ปค๋ฐ์ ์๋์ผ๋ก ์ญ์ ํ๋ค.
๋ชจ๋ ์ปค๋ฐ์ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์์ ํ๊ธฐ
ํ๋ก์ ํธ๋ฅผ ์คํ์์ค๋ก ๊ณต๊ฐํ ๋์๋ ํ์ฌ ์ด๋ฉ์ผ ์ฃผ์๋ก ์ปค๋ฐ๋ ๊ฒ์ ๊ฐ์ธ ์ด๋ฉ์ผ ์ฃผ์๋ก ๋ณ๊ฒฝํด์ผ ํ๋ค. ์๋๋ฉด ์์ git config
๋ก ์ด๋ฆ๊ณผ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ค์ ํ๋ ๊ฒ์ ์์์ ์๋ ์๋ค. ์ด์จ๋ filter-branch
๋ช
๋ น์ --commit-filter
์ต์
์ ์ฌ์ฉํ์ฌ ๊ฐ ์ปค๋ฐ์ ๋ฑ๋ก๋ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์์ ํ ์ ์๋ค. ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ๋ณ๊ฒฝํ ๋๋ ์กฐ์ฌํด์ผ ํ๋ค.
์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ ์ฃผ์๋ก ๋ณ๊ฒฝํ๋ค. ๋ชจ๋ ์ปค๋ฐ์ ๋ถ๋ชจ์ SHA-1 ๊ฐ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ปค๋ฐ์ SHA-1๊ฐ๋ง ๋ฐ๋๋ ๊ฒ์ด ์๋๋ผ ๋ชจ๋ ์ปค๋ฐ์ SHA-1 ๊ฐ์ด ๋ฐ๋๋ค.
Git์ผ๋ก ๋ฒ๊ทธ ์ฐพ๊ธฐ
Git์ ๊ต์ฅํ ์ ์ฐํด์ ์ด๋ค ํ๋ก์ ํธ์๋ ์ฌ์ฉํ ์ ์๋ค. ๊ฒ๋ค๊ฐ ๋ฌธ์ ๋ฅผ ์ผ์ผํจ ๋ฒ์ธ์ด๋ ๋ฒ๊ทธ๋ ์ฝ๊ฒ ์ฐพ์ ์ ์๋๋ก ๋์์ค๋ค.
ํ์ผ ์ด๋
ธํ
์ด์
๋ฒ๊ทธ๋ฅผ ์ฐพ์ ๋ ๋จผ์ ๊ทธ ์ฝ๋๊ฐ ์, ์ธ์ ์ถ๊ฐํ๋์ง ์๊ณ ์ถ์ ๊ฒ์ด๋ค. ์ด๋๋ ํ์ผ ์ด๋
ธํ
์ด์
์ ํ์ฉํ๋ค. ํ์คํ์ค ๋ง์ง๋ง์ผ๋ก ์ปค๋ฐํ ์ฌ๋์ด ๋๊ตฌ์ธ์ง, ์ธ์ ๋ง์ง๋ง์ผ๋ก ์ปค๋ฐํ๋์ง ๋ณผ ์ ์๋ค. ์ด๋ค ๋ฉ์๋์ ๋ฒ๊ทธ๊ฐ ์์ผ๋ฉด git blame
๋ช
๋ น์ผ๋ก ๊ทธ ๋ฉ์๋์ ๊ฐ ์ค์ ๋๊ฐ ์ธ์ ๋ง์ง๋ง์ผ๋ก ๊ณ ์ณค๋์ง ์ฐพ์๋ผ ์ ์๋ค:
์ฒซ ํญ๋ชฉ์ ๊ทธ ์ค์ ๋ง์ง๋ง์ ์์ ํ ์ปค๋ฐ์ SHA-1 ๊ฐ์ด๋ค. ๊ทธ๋ค์ ๋ ํญ๋ชฉ์ ๋๊ฐ, ์ธ์ ๊ทธ ์ค์ ์ปค๋ฐํ๋์ง ๋ณด์ฌ์ค๋ค. ๊ทธ๋์ ๋๊ฐ, ์ธ์ ์ปค๋ฐํ๋์ง ์ฝ๊ฒ ์ฐพ์ ์ ์๋ค. ๊ทธ ๋ค์ ํ์ผ์ ์ค ๋ฒํธ์ ๋ด์ฉ์ ๋ณด์ฌ์ค๋ค. ๊ทธ๋ฆฌ๊ณ ^4832fe2
์ปค๋ฐ์ด ๊ถ๊ธํ ํ
๋ฐ ์ด ํ์๊ฐ ๋ถ์ด ์์ผ๋ฉด ํด๋น ์ค์ด ์ฒ์ ์ปค๋ฐํ ๊ฒ์ ์๋ฏธํ๋ค. ๊ทธ๋ฌ๋๊น ํด๋น ์ค์ 4832fe2
์์ ์ปค๋ฐ๋ ํ ๋ณ๊ฒฝ๋ ์ ์ด ์๋ค. ์ง๊ธ๊น์ง ์ปค๋ฐ์ ์์ ํ๋ ๊ฒ์ ๋ฐฐ์ฐ๋ฉด์ ^
์ ์ ์ด๋ ์ธ ๊ณณ์์ ์ฌ์ฉํ๋ค๊ณ ๋ฐฐ์ ๊ธฐ ๋๋ฌธ์ ์ฝ๊ฐ ํท๊ฐ๋ฆด ์ ์์ผ๋ ํผ๋ํ์ง ๋ง์.
Git์ ํ์ผ ์ด๋ฆ์ ๋ณ๊ฒฝํ ์ด๋ ฅ์ ๋ณ๋๋ก ๊ธฐ๋กํด๋์ง ์๋๋ค. ํ์ง๋ง, ์๋ ์ด ์ ๋ณด๋ค์ ๊ฐ ์ค๋
์ท์ ์ ์ฅ๋๊ณ ์ด ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ ๋ณ๊ฒฝ ์ด๋ ฅ์ ๋ง๋ค์ด ๋ผ ์ ์๋ค. ๊ทธ๋ฌ๋๊น ํ์ผ์ ์๊ธด ๋ณํ๋ ๋ฌด์์ด๋ ์ง ์์๋ผ ์ ์๋ค. Git์ ํ์ผ ์ด๋
ธํ
์ด์
์ ๋ถ์ํ์ฌ ์ฝ๋๋ค์ด ์๋ ์ด๋ค ํ์ผ์์ ์ปค๋ฐ๋ ๊ฒ์ธ์ง ์ฐพ์์ค๋ค. ์๋ฅผ ๋ค์ด๋ณด์. GITServerHandler.m
์ ์ฌ๋ฌ ๊ฐ์ ํ์ผ๋ก ๋ฆฌํฉํ ๋งํ๋๋ฐ ๊ทธ ์ค ํ ํ์ผ์ด GITPackUpload.m
์ด๋ผ๋ ํ์ผ์ด๋ผ๊ณ ํ์. -C
์ต์
์ผ๋ก GITPackUpload.m
ํ์ผ์ ์ถ์ ํด๋ณด๋ฉด ๊ฐ ์ฝ๋๊ฐ ์๋ ์ด๋ค ํ์ผ๋ก ์ปค๋ฐ๋ ๊ฒ์ธ์ง ์ ์ ์๋ค:
์ธ์ ๋ ์ฝ๋๊ฐ ์ปค๋ฐ๋ ๋น์์ ํ์ผ์ด๋ฆ์ ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ๋ฆฌํฉํ ๋งํด๋ ์ถ์ ํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ค ํ์ผ์ ์ ์ฉํด๋ด๋ ๊ฐ ์ค์ ์ปค๋ฐํ ๋น์์ ํ์ผ์ด๋ฆ์ ์ ์ ์๋ค. ๋ฒ๊ทธ๋ฅผ ์ฐพ์ ๋ ์ ๋ง ์ ์ฉํ๋ค.
์ด์ง ํ์
ํ์ผ ์ด๋
ธํ
์ด์
์ ํน์ ์ด์์ ๊ด๋ จ๋ ์ปค๋ฐ์ ์ฐพ๋ ๋ฐ์๋ ์ข๋ค. ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ์์ฌ์ค๋ฌ์ด ์ปค๋ฐ์ด ์์ญ, ์๋ฐฑ ๊ฐ์ ์ด๋ฅด๋ฉด ๋๋์ฒด ์ด๋์๋ถํฐ ์์ํด์ผ ํ ์ง ๋ชจ๋ฅผ ์ ์๋ค. ์ด๋๋ git bisect
๋ช
๋ น์ด ์ ์ฉํ๋ค. bisect
๋ช
๋ น์ ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ์ด์ง ํ์ ๋ฐฉ๋ฒ์ผ๋ก ์ขํ ์ฃผ๊ธฐ ๋๋ฌธ์ ์ด์์ ๊ด๋ จ๋ ์ปค๋ฐ์ ์ต๋ํ ๋น ๋ฅด๊ฒ ์ฐพ์๋ผ ์ ์๋๋ก ๋์์ค๋ค.
์ฝ๋๋ฅผ ์ด์ฉ ํ๊ฒฝ์ ๋ฐฐํฌํ๊ณ ๋ ํ์ ๊ฐ๋ฐํ ๋ ๋ฐ๊ฒฌํ์ง ๋ชปํ ๋ฒ๊ทธ๊ฐ ์๋ค๊ณ ๋ณด๊ณ ๋ฐ์๋ค. ๊ทธ๋ฐ๋ฐ ์ ๊ทธ๋ฐ ํ์์ด ๋ฐ์ํ๋์ง ์์ง ์ดํดํ์ง ๋ชปํ๋ ์ํฉ์ ๊ฐ์ ํด๋ณด์. ํด๋น ์ด์๋ฅผ ๋ค์ ๋ง๋ค๊ณ ์์
ํ๊ธฐ ์์ํ๋๋ฐ ๋ญ๊ฐ ์๋ชป๋๋์ง ์์๋ผ ์ ์๋ค. ์ด๋ด ๋ bisect๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ๋ค์ ธ ๋ณด๋ ๊ฒ ์ข๋ค. ๋จผ์ git bisect start
๋ช
๋ น์ผ๋ก ์ด์ง ํ์์ ์์ํ๊ณ git bisect bad
๋ฅผ ์คํํ์ฌ ํ์ฌ ์ปค๋ฐ์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ํ์๋ฅผ ๋จ๊ธฐ๊ณ ๋์ ๋ฌธ์ ๊ฐ ์๋ ๋ง์ง๋ง ์ปค๋ฐ์ git bisect good [good_commit]
๋ช
๋ น์ผ๋ก ํ์ํ๋ค.
์ด ์์ ์์ ๋ง์ง๋ง์ผ๋ก ๊ด์ฐฎ์๋ ์ปค๋ฐ(v1.0)๊ณผ ํ์ฌ ๋ฌธ์ ๊ฐ ์๋ ์ปค๋ฐ ์ฌ์ด์ ์๋ ์ปค๋ฐ์ ์ ๋ถ 12๊ฐ์ด๊ณ Git์ ๊ทธ ์ค๊ฐ์ ์๋ ์ปค๋ฐ์ Checkoutํด์ค๋ค. ์ฌ๊ธฐ์์ ํด๋น ์ด์๊ฐ ๊ตฌํ๋๋์ง ํ
์คํธํด๋ณด๊ณ ๋ง์ฝ ์ด์๊ฐ ์์ผ๋ฉด ๊ทธ ์ค๊ฐ ์ปค๋ฐ ์ด์ ์ผ๋ก ๋ฒ์๋ฅผ ์ขํ๊ณ ์ด์๊ฐ ์์ผ๋ฉด ๊ทธ ์ค๊ฐ ์ปค๋ฐ ์ดํ๋ก ๋ฒ์๋ฅผ ์ขํ๋ค. ์ด์๋ฅผ ๋ฐ๊ฒฌํ์ง ๋ชปํ์ผ๋ฉด git bisect good
์ผ๋ก ์ด์๊ฐ ์์ง ์์์ ์๋ฆฌ๊ณ ๊ณ์ ์งํํ๋ค:
ํ์ฌ ๋ฌธ์ ๊ฐ ์๋ ์ปค๋ฐ๊ณผ ์ง๊ธ ํ
์คํธํ ์ปค๋ฐ ์ฌ์ด์์ ์ค๊ฐ์ ์๋ ์ปค๋ฐ์ด Checkout๋๋ค. ๋ค์ ํ
์คํธํด๋ณด๊ณ ์ด์๊ฐ ์์ผ๋ฉด git bisect bad
๋ก ์ด์๊ฐ ์๋ค๊ณ ์๋ฆฐ๋ค:
์ด์ ์ด์๋ฅผ ์ฒ์ ๊ตฌํํ ์ปค๋ฐ์ ์ฐพ์๋ค. ์ด SHA-1 ๊ฐ์ ํฌํจํ ์ด ์ปค๋ฐ์ ์ ๋ณด๋ฅผ ํ์ธํ๊ณ ์์ ๋ ํ์ผ์ด ๋ฌด์์ธ์ง ํ์ธํ๋ค. ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์์ ์ ๋๋์ฒด ๋ฌด์จ ์ผ์ด ์์๋์ง ์๋์ ๊ฐ์ด ์ดํด๋ณธ๋ค:
์ด์ ์ฐพ์์ผ๋๊น git bisect reset
๋ช
๋ น์ ์คํ์์ผ์ ์ด์ง ํ์์ ์์ํ๊ธฐ ์ ์ผ๋ก HEAD๋ฅผ ๋๋ ค๋๋๋ค:
์๋ฐฑ ๊ฐ์ ์ปค๋ฐ๋ค ์ค์์ ๋ฒ๊ทธ๊ฐ ๋ง๋ค์ด์ง ์ปค๋ฐ์ ์ฐพ๋ ๋ฐ ๋ช ๋ถ๋ฐ์ ๊ฑธ๋ฆฌ์ง ์๋๋ค. ํ๋ก์ ํธ๊ฐ ์ ์์ ์ผ๋ก ์ํ๋๋ฉด 0์ ๋ฐํํ๊ณ ๋ฌธ์ ๊ฐ ์์ ๊ฒฝ์ฐ 1์ ๋ฐํํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค๋ฉด ์ด git bisect
๊ณผ์ ์ ์์ ํ ์๋ํ ํ ์ ์๋ค. ๋จผ์ bisect start
๋ช
๋ น์ผ๋ก bisect๋ฅผ ์ฌ์ฉํ ๋ฒ์๋ฅผ ์๋ ค์ค๋ค. ์์์ ํ ๊ฒ์ฒ๋ผ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๋ ์ปค๋ฐ๊ณผ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๋ ์ปค๋ฐ์ ๋๊ธฐ๋ฉด ๋๋ค:
๋ฌธ์ ๊ฐ ์๊ธด ์ฒซ ์ปค๋ฐ์ ์ฐพ์ ๋๊น์ง Checkoutํ ๋๋ง๋ค test-error.sh
๋ฅผ ์คํํ๋ค. make
๋ ์ง make tests
๋ ์ง ์ด์จ๋ ์ด์๋ฅผ ์ฐพ๋ ํ
์คํธ๋ฅผ ์คํํ์ฌ ์ฐพ๋๋ค.
์๋ธ๋ชจ๋
ํ๋ก์ ํธ๋ฅผ ์ํํ๋ค ๋ณด๋ฉด ๋ค๋ฅธ ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์๋ค. ๋ณดํต ์ฌ์ฉํ ํ๋ก์ ํธ๋ค์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด๋ค. ์ด๋ฐ ์ํฉ์์ ์์ฃผ ์๊ธฐ๋ ์ด์๋, ๋ ํ๋ก์ ํธ๋ฅผ ์๋ก ๋ณ๊ฐ๋ก ๋ค๋ฃจ๋ฉด์๋ ๊ทธ ์ค ํ๋๋ฅผ ๋ค๋ฅธ ํ๋ ์์์ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
Atom ํผ๋๋ฅผ ์ ๊ณตํ๋ ์น์ฌ์ดํธ๋ฅผ ๋ง๋ ๋ค๊ณ ๊ฐ์ฅํ์. Atom ํผ๋๋ฅผ ์์ฑํ๋ ์ฝ๋๋ ์ง์ ์์ฑํ์ง ์๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ๋ค ์ฐ๊ธฐ๋ก ํ๋ค. ๊ทธ๋ฌ๋ฉด CPAN์ด๋ Ruby gem ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ํด๋น ์์ค์ฝ๋๋ฅผ ํ๋ก์ ํธ๋ก ๋ณต์ฌํด์ผ ํ๋ค. ์ฌ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ ํ๋ ๊ฒ์ ์ด๋ ต๋ค. ํ์ง๋ง ์์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ด์ฉํ ์ ์๋๋ก ๋ฐฐํฌํ๋ ๊ฒ์ ๋ ์ด๋ ต๋ค. ๊ทธ๋์ ํ๋ก์ ํธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋๋ฅผ ํฌํจ์์ผ์ ์์ ํ๋ ๋ฐฉ๋ฒ๋ ์ฌ์ฉํ๋ค. ์ด๋ ๊ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋๋ฅผ ํฌํจ์ํค๋ฉด ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๋ก์ ํธ์ ์ฝ๋์ Mergeํ๊ธฐ ์ด๋ ต๊ฒ ๋๋ค.
Git์ ์๋ธ๋ชจ๋์ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ค๋ค. ์๋ธ๋ชจ๋์ Git ์ ์ฅ์ ์์ ๋ค๋ฅธ Git ์ ์ฅ์๋ฅผ ๋ ์ ์๊ฒ ํด์ค๋ค. ์ด๋ ๊ฒ ํด๋ ๋ Git ์ ์ฅ์ ๋ชจ๋ ์ฌ์ ํ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌ๋๋ค.
์๋ธ๋ชจ๋ ์์ํ๊ธฐ
ํ ๋ฒ Ruby ์น์๋ฒ ๊ฒ์ดํธ์จ์ด ์ธํฐํ์ด์ค์ธ Rack ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ก์ ํธ์ ์ถ๊ฐํด๋ณด์. ์ถ๊ฐํ๊ณ ๋์๋ ์์ผ๋ก ์ฌ์ ํ ํด๋น ์ ์ฅ์์์ ๊ด๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ง์ ๋๊ณ ์ฝ๋๋ฅผ ์์ ํ ์ ์๋ค. ๋จผ์ git submodule add
๋ช
๋ น์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์๋ธ๋ชจ๋๋ก ์ถ๊ฐํ๋ค:
์ด์ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ณด๋ฉด rack
์ด๋ผ๋ ๋๋ ํ ๋ฆฌ๊ฐ ์๊ฒผ์ ๊ฒ์ด๋ค. ๊ทธ ๋๋ ํ ๋ฆฌ๊ฐ Rack ํ๋ก์ ํธ์ด๋ค. rack
๋๋ ํ ๋ฆฌ ์์์ ์์ ํ๊ณ Pushํ ๊ถํ์ด ์๋ ์ ์ฅ์๋ฅผ ํ๋ ์ถ๊ฐํ๊ณ ๋์ ๊ทธ ์ ์ฅ์์ Pushํ๋ค. ๋ฌผ๋ก ์๋ ํ๋ก์ ํธ ์ ์ฅ์์์๋ Fetchํ๊ณ Mergeํ ์ ์๋ค. ์๋ธ๋ชจ๋์ ์ถ๊ฐํ ์งํ ๋ฐ๋ก git status
๋ผ๋ ๋ช
๋ น์ ์คํํ๋ฉด ์๋์ ๊ฐ์ด ๋ ํ์ผ์ด ์๊ธด ๊ฒ์ ์ ์ ์๋ค:
.gitmodules
ํ์ผ์ ์ดํด๋ณด์. ์ด ๊ฒ์ ๋ก์ปฌ ๋๋ ํ ๋ฆฌ์ ํ๋ก์ ํธ URL์ ๋งคํ ์ ๋ณด๊ฐ ์ ์ฅ๋ ์ค์ ํ์ผ์ด๋ค:
์๋ธ๋ชจ๋ ๊ฐ์๋งํผ ์ด ํญ๋ชฉ์ด ์๊ธด๋ค. ์ด ํ์ผ๋ .gitignore
ํ์ผ์ฒ๋ผ ๋ฒ์ ๊ด๋ฆฌ๋๋ค. ๋ค๋ฅธ ํ์ผ์ฒ๋ผ Pushํ๊ณ ํํ๋ค. ์ด ํ๋ก์ ํธ๋ฅผ Cloneํ๋ ์ฌ๋์ .gitmodules
ํ์ผ์ ๋ณด๊ณ ์ด๋ค ์๋ธ๋ชจ๋ ํ๋ก์ ํธ๊ฐ ์๋์ง ์ ์ ์๋ค.
.gitmodules
์ ์ดํด๋ดค๊ณ ์ด์ rack
ํญ๋ชฉ์ ๋ํด ์ดํด๋ณด์. git diff
๋ช
๋ น์ ์คํ์ํค๋ฉด ํฅ๋ฏธ๋ก์ด ์ ์ ๋ฐ๊ฒฌํ ์ ์๋ค:
Git์ rack
๋๋ ํ ๋ฆฌ๋ฅผ ์๋ธ๋ชจ๋๋ก ์ทจ๊ธํ๊ธฐ ๋๋ฌธ์ ํ์ผ๋ค์ ์ง์ ์ถ์ ํ์ง ์๊ณ ์ปค๋ฐ ํ๋๋ง ์ ์ฅํ๋ค. rack
๋๋ ํ ๋ฆฌ์์ ์์ ์ ํ๊ณ ์ปค๋ฐํ๋ฉด ๋ค๋ฅธ ์ฌ๋์ด ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ค ์ ์๋๋ก HEAD๊ฐ ๊ฐ๋ฆฌํค๋ ์ปค๋ฐ์ด ์ํผํ๋ก์ ํธ์ ์ ์ฅ๋๋ค.
master
์ฒ๋ผ ๋ธ๋์น ์ด๋ฆ ๊ฐ์ ๋ ํผ๋ฐ์ค๊ฐ ์ ์ฅ๋๋ ๊ฒ์ด ์๋๋ผ ์ปค๋ฐ์ SHA-1 ๊ฐ์ด ์ ์ฅ๋๋ค.
์ํผํ๋ก์ ํธ๋ ์ปค๋ฐํด์ผ ๋๋ค:
rack ๋๋ ํ ๋ฆฌ์ ๋ชจ๋๋ 160000์ด๋ค. 160000 ๋ชจ๋๋ ์ผ๋ฐ์ ์ธ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ๊ฐ ์๋๋ผ๋ ์๋ฏธ๋ค.
ํ์ ํ๋ก์ ํธ์ ๋ง์ง๋ง ์ปค๋ฐ์ด ๋ฐ๋ ๋๋ง๋ค ์ํผํ๋ก์ ํธ์ ์ ์ฅ๋ ์ปค๋ฐ๋ ๋ฐ๊ฟ์ค๋ค. rack
๋๋ ํ ๋ฆฌ๋ฅผ ๋ณ๋์ ํ๋ก์ ํธ๋ก ์ทจ๊ธํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ Git ๋ช
๋ น์ ๋
๋ฆฝ์ ์ผ๋ก ๋์ํ๋ค:
์๋ธ๋ชจ๋์ด ์๋ ํ๋ก์ ํธ Cloneํ๊ธฐ
์๋ธ๋ชจ๋์ ์ฌ์ฉํ๋ ํ๋ก์ ํธ๋ฅผ Cloneํ๋ฉด ํด๋น ์๋ธ๋ชจ๋ ๋๋ ํ ๋ฆฌ๋ ๋น ๋๋ ํฐ๋ฆฌ๋ค:
๋ถ๋ช
ํ rack
๋๋ ํ ๋ฆฌ๊ฐ ์์ง๋ง ๋น์์ ธ ์๋ค. ๋จผ์ git submodule init
๋ช
๋ น์ผ๋ก ์๋ธ๋ชจ๋์ ์ด๊ธฐํํ๊ณ git submodule update
๋ช
๋ น์ผ๋ก ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ๋ถ ๊ฐ์ ธ์ค๋ฉด ์ํผํ๋ก์ ํธ์ ์ ์ฅ๋ ์ปค๋ฐ์ผ๋ก Checkout๋๋ค:
rack
๋๋ ํ ๋ฆฌ๋ ์ด์ ๋ณต์ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋๊ตฐ๊ฐ rack์ ์์ ํ๋ฉด ๊ทธ ์ฝ๋๋ฅผ ๊ฐ์ ธ๋ค Mergeํ๋ค:
Mergeํด์ ์๋ธ๋ชจ๋์ HEAD ๊ฐ์ด ๋ณ๊ฒฝ๋๋ค. ์ํผํ๋ก์ ํธ๊ฐ ์๋ ์ปค๋ฐ๊ณผ ์๋ธ๋ชจ๋์ HEAD๊ฐ ๋ฌ๋ผ์ ์์ง ์ํน ๋๋ ํ ๋ฆฌ์ ์ํ๋ ๊นจ๋ํ ์ํ๊ฐ ์๋๋ค:
์ด๋ด ๋ git submodule update
๋ช
๋ น์ ์คํํด์ ํด๊ฒฐํ๋ค:
์๋ธ๋ชจ๋ ํ๋ก์ ํธ๋ฅผ ํํ ๋๋ง๋ค git submodule update
๋ช
๋ น์ ์คํํด์ผ ํ๋ค. ๋ญ๊ฐ ์๋ ๊ฒ ๊ฐ์ง๋ง ์ ๋๋ค.
๊ฐ๋ฐ์๋ค์ด ํํ ์ ์ง๋ฅด๋ ์ค์๋ก ์๋ธ๋ชจ๋์ ์ฝ๋๋ฅผ ์์ ํ๊ณ ๋์ ์๋ฒ์ Pushํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ํผํ๋ก์ ํธ๋ Pushํ์ง๋ง ํ๋ก์ ํธ๊ฐ ์๋ ์ปค๋ฐ์ ์์ง Pushํ์ง ์๊ณ ๊ฐ๋ฐ์ PC์๋ง ์๋ค. ๋ง์ฝ ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ git submodule update
๋ฅผ ์คํํ๋ฉด ์ํผํ๋ก์ ํธ์ ์ ์ฅ๋ ์ปค๋ฐ์ ์๋ธ๋ชจ๋ ํ๋ก์ ํธ์์ ์ฐพ์ ์ ์์ด์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค:
๋๊ฐ ๋ง์ง๋ง์ผ๋ก ์๋ธ๋ชจ๋์ ์์ ํ๋์ง ํ์ธํ๊ณ :
๊ทธ ๊ฐ๋ฐ์์๊ฒ ์ด๋ฉ์ผ์ ๋ณด๋ด๊ฑฐ๋ ์ ํ๋ฅผ ๊ฑด๋ค.
์ํผํ๋ก์ ํธ
ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ํฌ๋ฉด CVS๋ Subversion์์๋ ๋ชจ๋ ํ๋ก์ ํธ๋ฅผ ๊ฐ๋จํ ํ์ ๋๋ ํ ๋ฆฌ๋ก ๋ง๋ค์๋ค. ๊ฐ๋ Git์์๋ ์ด๋ฐ Workflow์ ์ฌ์ฉํ๋ ค๋ ๊ฐ๋ฐ์๋ค์ด ์๋ค.
Git์์๋ ๊ฐ ํ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ณ๋์ Git ์ ์ฅ์๋ก ๋ง๋ค์ด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ ์ฅ์๋ฅผ ํฌํจํ๋ ์์ ์ ์ฅ์๋ฅผ ๋ง๋ ๋ค. ์ํผํ๋ก์ ํธ์ ํ๊ทธ์ ๋ธ๋์น๋ฅผ ์ด์ฉํด์ ๊ฐ ํ๋ก์ ํธ์ ๊ด๊ณ๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ์ ์ํ ์ ์๋ค๋ ๊ฒ์ Git๋ง์ ์ฅ์ ์ด๋ค.
์๋ธ๋ชจ๋ ์ฌ์ฉํ ๋ ์ฃผ์ํ ์ ๋ค
์ ์ฒด์ ์ผ๋ก ์๋ธ๋ชจ๋์ ์ด๋ ต์ง ์๊ฒ ์ฌ์ฉํ ์ ์์ง๋ง, ์๋ธ๋ชจ๋์ ์ฝ๋๋ฅผ ์์ ํ๋ ๊ฒฝ์ฐ์๋ ์ฃผ์๊ฐ ํ์ํ๋ค. git submodule update
๋ช
๋ น์ ์คํ์ํค๋ฉด ํน์ ๋ธ๋์น๊ฐ ์๋๋ผ ์ํผํ๋ก์ ํธ์ ์ ์ฅ๋ ์ปค๋ฐ์ Checkoutํด ๋ฒ๋ฆฐ๋ค. ๊ทธ๋ฌ๋ฉด detached HEAD
๋ผ๊ณ ๋ถ๋ฅด๋ ์ํ๊ฐ ๋๋ค. detached HEAD
๋ HEAD๊ฐ ๋ธ๋์น๋ ํ๊ทธ ๊ฐ์ ๊ฐ์ ๋ ํผ๋ฐ์ค๋ฅผ ๊ฐ๋ฆฌํค์ง ์๊ณ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ ๊ฒ์ ๋งํ๋ค. ๋ฐ์ดํฐ๋ฅผ ์์ด ๋ฒ๋ฆด ์๋ ์๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก detached HEAD
์ํ๋ ํผํด์ผ ํ๋ค.
submodule update
๋ฅผ ์คํํ๊ณ ๋์ ๋ณ๋์ ์์
์ฉ ๋ธ๋์น๋ฅผ ๋ง๋ค์ง ์๊ณ ์๋ธ๋ชจ๋ ์ฝ๋๋ฅผ ์์ ํ๊ณ ์ปค๋ฐํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ค์ ์ปค๋ฐํ ๊ฒ์ ์์ ์ฑ๋ก ์ํผํ๋ก์ ํธ์์ ๋ค์ git submodule update
๋ฅผ ์คํ์ํค๋ฉด Git์ ์๋ฌด ๋ง ์์ด Checkoutํด ๋ฒ๋ฆฐ๋ค. ์๋ฐํ ๋งํด์ ์ปค๋ฐ์ ์์ด์ง ๊ฒ์ ์๋์ง๋ง ๋ธ๋์น์ ์ํ์ง ์๋ ์ปค๋ฐ์ ์ฐพ์๋ด๊ธฐ๋ ์ ๋ง ์ด๋ ต๋ค.
git checkout -b work
๊ฐ์ ๋ช
๋ น์ผ๋ก ์์
ํ ๋๋ง๋ค work ๋ธ๋์น๋ฅผ ๋ง๋ค๋ฉด ์ด ๋ฌธ์ ๋ฅผ ํผํ ์ ์๋ค. ์ค์๋ก submodule update
๋ช
๋ น์ ์คํํด ๋ฒ๋ ค์ ํ๋ ์ผ์ ๋์ณ๋ฒ๋ ค๋ ํฌ์ธํฐ๊ฐ ์์ด์ ์ธ์ ๋ ์ง ๋์ฐพ์ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ธ๋ชจ๋์ด ์๋ ์ํผํ๋ก์ ํธ์ ๋ธ๋์น๋ฅผ ์ค๊ฐ ๋๋ ์ฝ๊ฐ์ ์ถ๊ฐ์์ ์ด ํ์ํ๋ค. ๋ธ๋์น๋ฅผ ๋ง๋ค๊ณ ์๋ธ๋ชจ๋์ ์ถ๊ฐํ๋ค. ๊ทธ ๋ค์์ ์๋ธ๋ชจ๋์ด ์๋ ๋ธ๋์น๋ก ๋์๊ฐ๋ค. ๊ทธ๋ ์ง๋ง, ์ด๋ฏธ ์ถ๊ฐํ ์๋ธ๋ชจ๋ ๋๋ ํ ๋ฆฌ๊ฐ untracked ์ํ๋ก ๋ณด์ธ๋ค:
์๋ธ๋ชจ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ค๋ฅธ ๊ณณ์ ์ฎ๊ฒจ ๋๊ฑฐ๋ ์ญ์ ํด์ผ ํ๋ค. ์ญ์ ํ ๊ฒฝ์ฐ๋ ์๋ ๋ธ๋์น๋ก ๋์์์ ๋ ์๋ธ๋ชจ๋์ ๋ค์ Cloneํด์ผ ํ๊ณ , ์ด ๊ฒฝ์ฐ ์์ง Pushํ์ง ์์๋ ๋ณ๊ฒฝ์ฌํญ์ด๋ ๋ธ๋์น๋ฅผ ์์ ์ ์๋ค.
rack์ด๋ผ๋ ๋๋ ํ ๋ฆฌ๊ฐ ์๊ณ ์ด๊ฒ์ ์๋ธ๋ชจ๋๋ก ๋ฐ๊พธ๋ ค๊ณ ํ๋ค๊ณ ๊ฐ์ ํ์. ๋จผ์ rack ๋๋ ํ ๋ฆฌ๋ฅผ ์ญ์ ํ๊ณ submodule add
๋ฅผ ์คํํ๋ฉด Git์ ์๋์ ๊ฐ์ ์๋ฌ๋ฅผ ๋ฑ๋๋ค:
rack
๋๋ ํ ๋ฆฌ๋ฅผ Staging Area์์ ์ ๊ฑฐํ๋ฉด ์๋ธ๋ชจ๋์ ์ถ๊ฐํ ์ ์๋ค.
ํ ๋ธ๋์น์์๋ ํด๊ฒฐํ๋ค. ์์ง ํด๋น ๋๋ ํ ๋ฆฌ๋ฅผ ์๋ธ๋ชจ๋๋ก ๋ง๋ค์ง ์์ ๋ธ๋์น๋ฅผ Checkoutํ๋ ค๊ณ ํ๋ฉด ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋๋ค:
๋ค๋ฅธ ๋ธ๋์น๋ก ๋ฐ๊พธ๊ธฐ ์ ์ rack
์๋ธ๋ชจ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ฎ๊ฒจ ๋๋ค:
๊ทธ๋ฆฌ๊ณ ๋์ ๋ค์ ์๋ธ๋ชจ๋์ด ์๋ ๋ธ๋์น๋ก ๋์๊ฐ๋ฉด rack ๋๋ ํ ๋ฆฌ๋ ํ
๋น์ด ์๋ค. git submodule update
๋ช
๋ น์ผ๋ก ๋ค์ Cloneํ๊ฑฐ๋ /tmp/rack/
์ ๋ณต์ฌํด๋ ํ์ผ์ ๋ค์ ๋ณต์ฌํ๋ค.
Subtree Merge
์๋ธ๋ชจ๋ ์์คํ
์ด ๋ฌด์์ด๊ณ ์ด๋์ ์ฐ๋์ง ๋ฐฐ์ ๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด ๋ ํ๋ ์๋ค. Git์ Mergeํ๋ ์์ ์ ๋ฌด์์ Mergeํ ์ง, ์ด๋ค ์ ๋ต์ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํด์ผ ํ๋ค. Git์ ๋ธ๋์น ๋ ๊ฐ๋ฅผ Mergeํ ๋์๋ Recursive ์ ๋ต์ ์ฌ์ฉํ๊ณ ์ธ ๊ฐ ์ด์์ ๋ธ๋์น๋ฅผ Mergeํ ๋์๋ Octopus ์ ๋ต์ ์ฌ์ฉํ๋ค. ์ด ์ ๋ต์ ์๋์ผ๋ก ์ ํ๋๋ค. Mergeํ ๋ธ๋์น๊ฐ ๋๊ฐ๋ฉด Recursive ์ ๋ต์ด ์ ํ๋๋ค. Recursive ์ ๋ต์ Mergeํ๋ ค๋ ๋ ์ปค๋ฐ๊ณผ ๊ณตํต ์กฐ์ ์ปค๋ฐ์ ์ด์ฉํ๋ three-way merge
๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋จ ๋ ๊ฐ์ ๋ธ๋์น์๋ง ์ ์ฉํ ์ ์๋ค. Octopus ์ ๋ต์ ๋ธ๋์น๊ฐ ์ฌ๋ฌ ๊ฐ๋ผ๋ Mergeํ ์ ์์ง๋ง ๋น๊ต์ ์ถฉ๋์ด ์ฝ๊ฒ ์ผ์ด๋๋ค.
๋ค๋ฅธ ์ ๋ต๋ ์๋๋ฐ ๊ทธ์ค ํ๋๊ฐ Subtree Merge๋ค. ์ด Merge๋ ํ์ ํ๋ก์ ํธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ์๋ ์ฌ์ฉํ๋ค. ์์์ ์ฌ์ฉํ๋ Rack ์์ ๋ฅผ ์ ์ฉํด ๋ณด์.
Subtree Merge๋ ๋ง์น ํ์ ํ๋ก์ ํธ๊ฐ ์์ ํฉ์ณ์ง ๊ฒ์ฒ๋ผ ๋ณด์ผ ์ ๋๋ก ํ ํ๋ก์ ํธ๋ฅผ ๋ค๋ฅธ ํ๋ก์ ํธ์ ํ์ ๋๋ ํ ๋ฆฌ์ ์ฐ๊ฒฐํด์ค๋ค. ์ ๋ง ๋๋ผ์ด ๊ธฐ๋ฅ์ด๋ค.
Rack ํ๋ก์ ํธ๋ฅผ ๋ฆฌ๋ชจํธ ์ ์ฅ์๋ก ์ถ๊ฐ์ํค๊ณ ๋ธ๋์น๋ฅผ Checkoutํ๋ค:
Checkoutํ rack_branch
์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ origin ํ๋ก์ ํธ์ master
๋ธ๋์น์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ๋ ๋ค๋ฅด๋ค. ๋ธ๋์น๋ฅผ ๋ฐ๊ฟ๊ฐ๋ฉฐ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง ํ์ธํ๋ค:
์ฌ๊ธฐ์์ Rack ํ๋ก์ ํธ๋ฅผ master
๋ธ๋์น์ ํ์ ๋๋ ํ ๋ฆฌ์ ๋ฃ์ผ๋ ค๋ฉด git read-tree
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ค. _9์ฅ_์์ read-read
๋ฅ์ ๋ช
๋ น์ด๋ฅผ ์ข ๋ ์์ธํ ๋ค๋ฃฌ๋ค. ์ฌ๊ธฐ์์๋ ์ํน ๋๋ ํ ๋ฆฌ์ Staging Area๋ก ์ด๋ค ๋ธ๋์น๋ฅผ ํต์งธ๋ก ๋ฃ์ ์ ์๋ค๋ ๊ฒ๋ง ์๋ฉด ๋๋ค. master
๋ธ๋์น๋ก ๋๋์๊ฐ์ rack_branch
๋ฅผ rack
๋๋ ํ ๋ฆฌ์ ๋ฃ๋๋ค:
๊ทธ๋ฆฌ๊ณ ๋์ ์ปค๋ฐ์ ํ๋ฉด rack ๋๋ ํ ๋ฆฌ๋ rack ํ๋ก์ ํธ์ ํ์ผ๋ค์ ์ง์ ๋ณต์ฌํด ๋ฃ์ ๊ฒ๊ณผ ๋๊ฐ๋ค. ๋ณต์ฌํ ๊ฒ๊ณผ ๋ค๋ฅธ ์ ์ ๋ธ๋์น๋ฅผ ์์ ๋กญ๊ฒ ๋ฐ๊ฟ ์ ์๊ณ ์ต์ ๋ฒ์ ์ Rack ํ๋ก์ ํธ์ ์ฝ๋๋ฅผ ์ฝ๊ฒ ๋์ด ์ฌ ์ ์๋ค๋ ์ ์ด๋ค:
๊ทธ๋ฆฌ๊ณ git merge -s subtree
๋ผ๋ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ master
๋ธ๋์น์ Mergeํ ์ ์๊ณ ์ํ๋ ์ํ์ง ์๋ ๊ฐ์ ํ์คํ ๋ฆฌ๋ ํจ๊ป Merge๋๋ค. ์์ ๋ด์ฉ๋ง Mergeํ๊ฑฐ๋ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ๋ค์ ์์ฑํ๋ ค๋ฉด -s subtree
์ต์
์๋ค๊ฐ --squash
, --no-commit
๋ฅผ ํจ๊ป ์ฌ์ฉํด์ผ ํ๋ค:
Rack ํ๋ก์ ํธ์ ์ต์ ์ฝ๋๋ฅผ ๊ฐ์ ธ๋ค๊ฐ Mergeํ๊ณ ์ด์ ์ปค๋ฐํ๋ฉด ๋๋ค. ๋ฌผ๋ก ๋ฐ๋๋ก ํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค. rack
๋๋ ํ ๋ฆฌ๋ก ์ด๋ํด์ ์ฝ๋๋ฅผ ์์ ํ๊ณ rack_branch
๋ธ๋์น๋ก Mergeํ๋ค. ๊ทธ๋ฆฌ๊ณ Rack ํ๋ก์ ํธ ์ ์ฅ์์ Pushํ ์ ์๋ค.
rack
๋๋ ํ ๋ฆฌ์ rack_branch
๋ธ๋์น์์ ์ฐจ์ด์ ๋ ๋น๊ตํ ์ ์๋ค. ์ผ๋ฐ์ ์ธ diff
๋ช
๋ น์ ์ฌ์ฉํ ์ ์๊ณ git diff-tree
๋ช
๋ น์ ์ฌ์ฉํด์ผ ํ๋ค:
๋ rack
๋๋ ํ ๋ฆฌ์ ์ ์ฅ์์ master
๋ธ๋์น์ ๋น๊ตํ ์ ์๋ค:
์์ฝ
์ปค๋ฐ๊ณผ ์ ์ฅ์๋ฅผ ๊ผผ๊ผผํ๊ฒ ๊ด๋ฆฌํ๋ ๋๊ตฌ๋ฅผ ์ดํด๋ณด์๋ค. ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๋ฐ๋ก ๋๊ฐ, ์ธ์ , ๋ฌด์์ ํ๋์ง ์ฐพ์๋ด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ก์ ํธ๋ฅผ ์ชผ๊ฐ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ค๋ ๋ฐฐ์ ๋ค. ์ด์ Git ๋ช ๋ น์ด๋ ๊ฑฐ์ ๋ชจ๋ ๋ฐฐ์ด ๊ฒ์ด๋ค. ๋ ์๋ค์ด ํ๋ฃจ๋นจ๋ฆฌ ์ต์ํด์ ธ์ ์์ ๋กญ๊ฒ ์ฌ์ฉํ์ผ๋ฉด ์ข๊ฒ ๋ค.
Last updated
Was this helpful?