Git์ ํต์ฌ์ ๋ญ๊น? ์ด ์ง๋ฌธ์ Git์ ์ดํดํ๋๋ฐ ๊ต์ฅํ ์ค์ํ๋ค. Git์ด ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ๋์ํ๋์ง ์ดํดํ๋ค๋ฉด ์ฝ๊ฒ Git์ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. Git์ ๋ฐฐ์ฐ๋ ค๋ฉด Subversion์ด๋ Perforce ๊ฐ์ ๋ค๋ฅธ VCS๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝํ์ ๋ฒ๋ ค์ผ ํ๋ค. Git์ ๋ฏธ๋ฌํ๊ฒ ๋ฌ๋ผ์ ๋ค๋ฅธ VCS์์ ์ฐ๋ ๊ฐ๋ ์ผ๋ก๋ ํท๊ฐ๋ฆฐ๋ค. ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ ๋งค์ฐ ๋น์ทํ์ง๋ง, ์ ๋ณด๋ฅผ ์ทจ๊ธํ๋ ๋ฐฉ์์ด ๋ค๋ฅด๋ค. ์ด๋ฐ ์ฐจ์ด์ ์ ์ดํดํ๋ฉด Git์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ด๋ ต์ง ์๋ค.
Subversion๊ณผ Subversion ๋น์ทํ ๋๋ค๊ณผ Git์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ์๋ค. ํฐ ํ์์ ๋ดค์ ๋ VCS ์์คํ ๋๋ถ๋ถ์ ๊ด๋ฆฌํ๋ ์ ๋ณด๊ฐ ํ์ผ๋ค์ ๋ชฉ๋ก์ด๋ค. CVS, Subversion, Perforce, Bazaar ๋ฑ์ ์์คํ ์ ๊ฐ ํ์ผ์ ๋ณํ๋ฅผ ์๊ฐ์์ผ๋ก ๊ด๋ฆฌํ๋ฉด์ ํ์ผ๋ค์ ์งํฉ์ ๊ด๋ฆฌํ๋ค(๋ณดํต ๋ธํ ๊ธฐ๋ฐ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ด๋ผ ํจ).
Git์ ์ด๋ฐ ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง๋ ์ทจ๊ธํ์ง๋ ์๋๋ค. ๋์ Git์ ๋ฐ์ดํฐ๋ฅผ ํ์ผ ์์คํ ์ค๋ ์ท์ ์ฐ์์ผ๋ก ์ทจ๊ธํ๊ณ ํฌ๊ธฐ๊ฐ ์์ฃผ ์๋ค. Git์ ์ปค๋ฐํ๊ฑฐ๋ ํ๋ก์ ํธ์ ์ํ๋ฅผ ์ ์ฅํ ๋๋ง๋ค ํ์ผ์ด ์กด์ฌํ๋ ๊ทธ ์๊ฐ์ ์ค์ํ๊ฒ ์ฌ๊ธด๋ค. ํ์ผ์ด ๋ฌ๋ผ์ง์ง ์์์ผ๋ฉด Git์ ์ฑ๋ฅ์ ์ํด์ ํ์ผ์ ์๋ก ์ ์ฅํ์ง ์๋๋ค. ๋จ์ง ์ด์ ์ํ์ ํ์ผ์ ๋ํ ๋งํฌ๋ง ์ ์ฅํ๋ค. Git์ ๋ฐ์ดํฐ๋ฅผ ์ค๋ ์ท์ ์คํธ๋ฆผ์ฒ๋ผ ์ทจ๊ธํ๋ค.
์ด๊ฒ์ด Git์ด ๋ค๋ฅธ VCS์ ๊ตฌ๋ถ๋๋ ์ ์ด๋ค. ์ด์ ๋๋ฌธ์ Git์ ๋ค๋ฅธ ์์คํ ๋ค์ด ๊ณผ๊ฑฐ๋ก๋ถํฐ ๋ต์ตํด์๋ ๋ฒ์ ์ปจํธ๋กค์ ๊ฐ๋ ๊ณผ ๋ค๋ฅด๋ค๋ ๊ฒ์ด๊ณ ๋ง์ ๋ถ๋ถ์ ์๋ก์ด ๊ด์ ์์ ๋ฐ๋ผ๋ณธ๋ค. Git์ ๊ฐ๋ ฅํ ๋๊ตฌ๋ฅผ ์ง์ํ๋ ์์ ํ์ผ์์คํ ์ด๋ค. Git์ ๋จ์ํ VCS๊ฐ ์๋๋ค. ch03-git-branching.asc์์ ์ค๋ช ํ Git ๋ธ๋์น๋ฅผ ์ฌ์ฉํ๋ฉด ์ป๊ฒ ๋๋ ์ด๋์ด ๋ฌด์์ธ์ง ์ค๋ช ํ๋ค.
๊ฑฐ์ ๋ชจ๋ ๋ช ๋ น์ด ๋ก์ปฌ ํ์ผ๊ณผ ๋ฐ์ดํฐ๋ง ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ์ ์๋ ๋ค๋ฅธ ์ปดํจํฐ๋ ํ์ ์๋ค. ๋๋ถ๋ถ์ ๋ช ๋ น์ด๊ฐ ๋คํธ์ํฌ์ ์๋์ ์ํฅ์ ๋ฐ๋ CVCS์ ์ต์ํ๋ค๋ฉด Git์ด ๋งค์ฐ ๋๋ผ์ธ ๊ฒ์ด๋ค. Git์ ์ด๋ฐ ํน์ง์์ ๋์ค๋ ๋ฏธ์น ๋ฏํ ์๋๋ ์ค์ง Git๋๋๋ง์ด ๊ตฌ์ฌํ ์ ์๋ ์ ๋ฅ์ด๋ค. ํ๋ก์ ํธ์ ๋ชจ๋ ํ์คํ ๋ฆฌ๊ฐ ๋ก์ปฌ ๋์คํฌ์ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๋ช ๋ น์ด ์์๊ฐ์ ์คํ๋๋ค.
์๋ฅผ ๋ค์ด Git์ ํ๋ก์ ํธ์ ํ์คํ ๋ฆฌ๋ฅผ ์กฐํํ ๋ ์๋ฒ ์์ด ์กฐํํ๋ค. ๊ทธ๋ฅ ๋ก์ปฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ์คํ ๋ฆฌ๋ฅผ ์ฝ์ด์ ๋ณด์ฌ ์ค๋ค. ๊ทธ๋์ ๋ ๊น์งํ ์ฌ์ด์ ํ์คํ ๋ฆฌ๋ฅผ ์กฐํํ ์ ์๋ค. ์ด๋ค ํ์ผ์ ํ์ฌ ๋ฒ์ ๊ณผ ํ ๋ฌ ์ ์ ์ํ๋ฅผ ๋น๊ตํด๋ณด๊ณ ์ถ์ ๋๋ Git์ ๊ทธ๋ฅ ํ ๋ฌ ์ ์ ํ์ผ๊ณผ ์ง๊ธ์ ํ์ผ์ ๋ก์ปฌ์์ ์ฐพ๋๋ค. ํ์ผ์ ๋น๊ตํ๊ธฐ ์ํด ๋ฆฌ๋ชจํธ์ ์๋ ์๋ฒ์ ์ ๊ทผํ๊ณ ๋์ ์์ ๋ฒ์ ์ ๊ฐ์ ธ์ฌ ํ์๊ฐ ์๋ค.
์ฆ ์คํ๋ผ์ธ ์ํ์ด๊ฑฐ๋ VPN์ ์ฐ๊ฒฐํ์ง ๋ชปํด๋ ๋งํ ์์ด ์ผ ํ ์ ์๋ค. ๋นํ๊ธฐ๋ ๊ธฐ์ฐจ ๋ฑ์์ ์์ ํ๊ณ ๋คํธ์ํฌ์ ์ ์ํ๊ณ ์์ง ์์๋ ์ปค๋ฐํ ์ ์๋ค(๋ก์ปฌ ์ ์ฅ์๋ผ๋ ์ ์ด ๊ธฐ์ต๋๋์ง). ๋ค๋ฅธ VCS ์์คํ ์์๋ ๋ถ๊ฐ๋ฅํ ์ผ์ด๋ค. Perforce๋ฅผ ์๋ก ๋ค์๋ฉด ์๋ฒ์ ์ฐ๊ฒฐํ ์ ์์ ๋ ํ ์ ์๋ ์ผ์ด ๋ณ๋ก ์๋ค. Subversion์ด๋ CVS์์๋ ๋ง์ฐฌ๊ฐ์ง๋ค. ์คํ๋ผ์ธ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ ์ ์์ด์ ํ์ผ์ ํธ์งํ ์๋ ์์ง๋ง, ์ปค๋ฐํ ์ ์๋ค. ๋งค์ฐ ์ฌ์ํด ๋ณด์ด์ง๋ง ์ค์ ๋ก ์ด ์ํฉ์ ๋ถ๋ฅ์ณ๋ณด๋ฉด ๋๊ปด์ง๋ ์ฐจ์ด๊ฐ ๋งค์ฐ ํฌ๋ค.
Git์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ ์ ํญ์ ์ฒดํฌ์ฌ์ ๊ตฌํ๊ณ ๊ทธ ์ฒดํฌ์ฌ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ค. ๊ทธ๋์ ์ฒดํฌ์ฌ์ ์ดํดํ๋ Git ์์ด๋ ์ด๋ ํ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ๋ ๋ณ๊ฒฝํ ์ ์๋ค. ์ฒดํฌ์ฌ์ Git์์ ์ฌ์ฉํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ(Atomic) ๋ฐ์ดํฐ ๋จ์์ด์ Git์ ๊ธฐ๋ณธ ์ฒ ํ์ด๋ค. Git ์์ด๋ ์ฒดํฌ์ฌ์ ๋ค๋ฃฐ ์ ์์ด์ ํ์ผ์ ์ํ๋ ์ ์ ์๊ณ ์ฌ์ง์ด ๋ฐ์ดํฐ๋ฅผ ์์ด๋ฒ๋ฆด ์๋ ์๋ค.
Git์ SHA-1 ํด์๋ฅผ ์ฌ์ฉํ์ฌ ์ฒดํฌ์ฌ์ ๋ง๋ ๋ค. ๋ง๋ ์ฒดํฌ์ฌ์ 40์ ๊ธธ์ด์ 16์ง์ ๋ฌธ์์ด์ด๋ค. ํ์ผ์ ๋ด์ฉ์ด๋ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ์ฌ ์ฒดํฌ์ฌ์ ๊ตฌํ๋ค. SHA-1์ ์๋์ฒ๋ผ ์๊ฒผ๋ค.
24b9da6552252987aa493b52f8696cd6d3b00373Git์ ๋ชจ๋ ๊ฒ์ ํด์๋ก ์๋ณํ๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ๊ฐ์ ์ฌ๊ธฐ์ ๊ธฐ์ ๋ณด์ธ๋ค. ์ค์ ๋ก Git์ ํ์ผ์ ์ด๋ฆ์ผ๋ก ์ ์ฅํ์ง ์๊ณ ํด๋น ํ์ผ์ ํด์๋ก ์ ์ฅํ๋ค.
Git์ผ๋ก ๋ฌด์ผ ํ๋ Git ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ ๋๋ค. ๋๋๋ฆฌ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ ๋ฐฉ๋ฒ์ด ์๋ค. ๋ค๋ฅธ VCS์ฒ๋ผ Git๋ ์ปค๋ฐํ์ง ์์ผ๋ฉด ๋ณ๊ฒฝ์ฌํญ์ ์์ด๋ฒ๋ฆด ์ ์๋ค. ํ์ง๋ง, ์ผ๋จ ์ค๋ ์ท์ ์ปค๋ฐํ๊ณ ๋๋ฉด ๋ฐ์ดํฐ๋ฅผ ์์ด๋ฒ๋ฆฌ๊ธฐ ์ด๋ ต๋ค.
Git์ ์ฌ์ฉํ๋ฉด ํ๋ก์ ํธ๊ฐ ์ฌ๊ฐํ๊ฒ ๋ง๊ฐ์ง ๊ฑฑ์ ์์ด ๋งค์ฐ ์ฆ๊ฒ๊ฒ ์ฌ๋ฌ ๊ฐ์ง ์คํ์ ํด ๋ณผ ์ ์๋ค. ch02-git-basics-chapter.asc์ ๋ณด๋ฉด Git์์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ ์ฅํ๊ณ ์์ค์ ์ด๋ป๊ฒ ๋ณต๊ตฌํ๋์ง ์ ์ ์๋ค.
์ด ๋ถ๋ถ์ ์ค์ํ๊ธฐ์ ์ง์คํด์ ์ฝ์ด์ผ ํ๋ค. Git์ ๊ณต๋ถํ๊ธฐ ์ํด ๋ฐ๋์ ์ง๊ณ ๋์ด๊ฐ์ผ ํ ๋ถ๋ถ์ด๋ค. Git์ ํ์ผ์ Committed, Modified, Staged ์ด๋ ๊ฒ ์ธ ๊ฐ์ง ์ํ๋ก ๊ด๋ฆฌํ๋ค.
-
Committed๋ ๋ฐ์ดํฐ๊ฐ ๋ก์ปฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ ํ๊ฒ ์ ์ฅ๋๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
-
Modified๋ ์์ ํ ํ์ผ์ ์์ง ๋ก์ปฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ปค๋ฐํ์ง ์์ ๊ฒ์ ๋งํ๋ค.
-
Staged๋ ํ์ฌ ์์ ํ ํ์ผ์ ๊ณง ์ปค๋ฐํ ๊ฒ์ด๋ผ๊ณ ํ์ํ ์ํ๋ฅผ ์๋ฏธํ๋ค.
์ด ์ธ ๊ฐ์ง ์ํ๋ Git ํ๋ก์ ํธ์ ์ธ ๊ฐ์ง ๋จ๊ณ์ ์ฐ๊ฒฐ๋ผ ์๋ค. Git ๋๋ ํ ๋ฆฌ, ์ํน ํธ๋ฆฌ, Staging Area ์ด๋ ๊ฒ ์ธ ๊ฐ์ง ๋จ๊ณ๋ฅผ ์ดํดํ๊ณ ๋์ด๊ฐ์.
Git ๋๋ ํ ๋ฆฌ๋ Git์ด ํ๋ก์ ํธ์ ๋ฉํ๋ฐ์ดํฐ์ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ฅํ๋ ๊ณณ์ ๋งํ๋ค. ์ด Git ๋๋ ํ ๋ฆฌ๊ฐ Git์ ํต์ฌ์ด๋ค. ๋ค๋ฅธ ์ปดํจํฐ์ ์๋ ์ ์ฅ์๋ฅผ Clone ํ ๋ Git ๋๋ ํ ๋ฆฌ๊ฐ ๋ง๋ค์ด์ง๋ค.
์ํน ํธ๋ฆฌ๋ ํ๋ก์ ํธ์ ํน์ ๋ฒ์ ์ Checkout ํ ๊ฒ์ด๋ค. Git ๋๋ ํ ๋ฆฌ๋ ์ง๊ธ ์์ ํ๋ ๋์คํฌ์ ์๊ณ ๊ทธ ๋๋ ํ ๋ฆฌ ์์ ์์ถ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ์ผ์ ๊ฐ์ ธ์์ ์ํน ํธ๋ฆฌ๋ฅผ ๋ง๋ ๋ค.
Staging Area๋ Git ๋๋ ํ ๋ฆฌ์ ์๋ค. ๋จ์ํ ํ์ผ์ด๊ณ ๊ณง ์ปค๋ฐํ ํ์ผ์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค. Git์์๋ ๊ธฐ์ ์ฉ์ด๋ก๋ โIndexโ ๋ผ๊ณ ํ์ง๋ง, โStaging Areaโ ๋ผ๋ ์ฉ์ด๋ฅผ ์จ๋ ์๊ด ์๋ค.
Git์ผ๋ก ํ๋ ์ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋์ ๊ฐ๋ค.
-
์ํน ํธ๋ฆฌ์์ ํ์ผ์ ์์ ํ๋ค.
-
Staging Area์ ํ์ผ์ Stage ํด์ ์ปค๋ฐํ ์ค๋ ์ท์ ๋ง๋ ๋ค. ๋ชจ๋ ํ์ผ์ ์ถ๊ฐํ ์๋ ์๊ณ ์ ํํ์ฌ ์ถ๊ฐํ ์๋ ์๋ค.
-
Staging Area์ ์๋ ํ์ผ๋ค์ ์ปค๋ฐํด์ Git ๋๋ ํ ๋ฆฌ์ ์๊ตฌ์ ์ธ ์ค๋ ์ท์ผ๋ก ์ ์ฅํ๋ค.
Git ๋๋ ํ ๋ฆฌ์ ์๋ ํ์ผ๋ค์ Committed ์ํ์ด๋ค. ํ์ผ์ ์์ ํ๊ณ Staging Area์ ์ถ๊ฐํ๋ค๋ฉด Staged์ด๋ค. ๊ทธ๋ฆฌ๊ณ Checkout ํ๊ณ ๋์ ์์ ํ์ง๋ง, ์์ง Staging Area์ ์ถ๊ฐํ์ง ์์์ผ๋ฉด Modified์ด๋ค. ch02-git-basics-chapter.asc์์ ์ด ์ํ์ ๋ํด ์ข ๋ ์์ธํ ๋ฐฐ์ด๋ค. ํนํ Staging Area๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ๋ถํฐ ์์ ์๋ตํ๋ ๋ฐฉ๋ฒ๊น์ง๋ ์ค๋ช ํ๋ค.


