Git์ ๋น๋ฐ์ ํ์ด๋ณด์: HEAD์จ์ ๊ธฐ๋ฌํ ๋ชจํ
Git์ ์ฌ์ฉํ๋ค ๋ณด๋ฉด "HEAD"๋ผ๋ ๊ฒ์ ์ข ์ข ๋ณด๊ฒ ๋ฉ๋๋ค. ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ์ดํด๋ณด๊ฑฐ๋, ๋ธ๋์น๋ฅผ ์์ฑํ ๋ ๋ฑ์ฅํ๋ HEAD. ๋๋์ฒด ๋ญ ์๋ฏธํ๋๊ฑด์ง ๊ทธ ์ ์ฒด๊ฐ ๊ถ๊ธํ์ ๋ถ๋ ๊ณ์ค๊ฒ๋๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ HEAD์ ๋ณธ์ง์ ๊ทธ๋ฆผ๊ณผ ์๋๋ฆฌ์ค๋ก ์ค๋ช ํด๋ณด๋ ค๊ณ ํฉ๋๋ค.๐
1. HEAD์จ์ ์ฒซ ๊ฑธ์, main ๋ธ๋์น
HEAD์จ๊ฐ Git ์ธ์์ ์ฒซ ๋ฐ์ ๋ด๋๋ ์ต๋๋ค. ์ด์ฉ๋ค๋ณด๋ ๋ฌผ ์์์ ์คํฐ๋ HEAD์จ๋ฅผ ์ํด, ๋ฐํ์ ๋ง๋ค์ด์ค์๋ค. ๋ฐํ์ ์ปค๋ฐ์ ํตํด ๋ง๋ค ์ ์์ต๋๋ค.
์๋ก์ด ์ปค๋ฐ์ด ์์ฑ๋ ๋๋ง๋ค HEAD ์จ๊ฐ ์๋ ๋ธ๋์น์ ๋ฐํ์ด ์ถ๊ฐ๋ฉ๋๋ค.
๐ก์ ๋ฆฌ
๋ธ๋์น๋ง ์์ผ๋ฉด ์๋ฌด๊ฒ๋ ํ ์ ์์ต๋๋ค. commit์ ํตํด ๋ธ๋์น์ ์๋ก์ด ์ ๋ณด๋ฅผ ์ ๋ ฅํ ์ ์์ต๋๋ค.
2. ์ ์ง๋ณธ๋ฅ: HEAD์จ๋ ๋ฉ์ถ์ง ์์๐
์ปค๋ฐ์ ํ๋ฒ ๋ ํด๋ณผ๊น์. ์๋ก์ด ๋ฐํ์ด ์๊ธฐ๋ฉด ์์ผ๋ก ๊ฐ๋ ๊ฒ์ ์ฐธ์ ์ ์๋ HEAD์จ์
๋๋ค. ๋ฐํ์ด ํ๋ ๋ ์๊ฒผ์ผ๋ ํ ์นธ ์ ์งํ๋ HEAD์จ์
๋๋ค.
๐ก์ ๋ฆฌ
HEAD๋ ํ์ฌ ์์ ์ค์ธ ๋ธ๋์น์ ์ต์ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ ๋๋ค.
3. ์๋ก์ด ๊ธธ: ๋ธ๋์น ์์ฑ
์ ๋ฉ๋ฆฌ ์ด์ ์ฐ๊ฝ์ ๋ฐ๊ฒฌํ HEAD์จ์
๋๋ค. ํ์ง๋ง ๊ฝ์ ์ง๊ธ ๊ฐ๋ ๊ธธ๋ก๋ง ์ง์งํ๋ค๋ฉด ์์ํ ๋๋ฌํ ์ ์๋ ์์น์ ์์ต๋๋ค.
HEAD์จ๋ฅผ ์ํด ์๋ก์ด ๊ธธ์ ๋ง๋ค์ด์ค์๋ค.
git branch feature/#1
git checkout feature/#1
์ด์ HEAD์จ๋ ์๋ก์ด ๊ธธ(feature/#1) ์์ ์ ์๊ฒ ๋ฉ๋๋ค.
ํ์ง๋ง ๊ธธ์ ๋ง๋ ๊ฒ ๋ง์ผ๋ก๋ ์๋ก์ด ๋ฐํ์ด ๋ง๋ค์ด์ง์ง ์์ต๋๋ค. HEAD์จ๊ฐ ์ ์๋ ์์น๋ ์ฌ์ ํ main ๋ธ๋์น์ ๊ฐ์ ๊ณตํต ๋ฐํ์
๋๋ค.
๐ก์ ๋ฆฌ
์๋ก์ด ๋ธ๋์น๋ฅผ ์์ฑํ๋ฉด ํ์ฌ ๋ธ๋์น์ ๋ง์ง๋ง ์ปค๋ฐ์ ๊ธฐ์ค์ผ๋ก ์๋ก์ด ์์ ๊ฒฝ๋ก๊ฐ ์์ฑ๋ฉ๋๋ค. ํ์ง๋ง ์๋ก์ด ์ปค๋ฐ์ด ์๋ค๋ฉด HEAD๋ ๊ธฐ์กด ๋ธ๋์น์ ๋์ผํ ์ง์ ์ ์์นํฉ๋๋ค.
4. ์๋ก์ด ๊ธธ, ์๋ก์ด ๋ฐํ
์ด์ ์๋ก์ด ๋ธ๋์น์์ ์ปค๋ฐ ํด๋ณผ๊น์. ์ปค๋ฐ์ ํ๋ฉด, main ๋ธ๋์น์๋ ๋ค๋ฅธ ๊ธธ๋ก ๊ฐ๋ ์๋ก์ด ๋ฐํ์ด ๋ง๋ค์ด์ง๋๋ค.
๋ฐํ์ ๋ค๋ก ๋ง๋ค ์๋ ์์ต๋๋ค. ์ด๋ ๋ธ๋์น์ด๋ ์ปค๋ฐ์ ์ถ๊ฐํ๋ฉด, ๊ฐ์ฅ ์ต๊ทผ ์์ฑ๋ ๋ฐํ์ ์งํ ๋ฐฉํฅ์ ์ด์ด์ ๋ง๋ค์ด์ง๋๋ค.
๋ฌผ๋ก ์ด๋ฏธ ๋ง๋ค์ด์ง ๊ฒฝ๋ก ์์์ ์ด๋ํ๋ ๊ฒ์ ์์ ์
๋๋ค. ์ง๋์จ ๊ฒฝ๋ก๋ก ๋์๊ฐ์ ํด๋น ๋ฐํ์์ ์ด์ด์ง๋ ์๋ก์ด ๋ฐํ์ ๋ง๋ค ์๋ ์์ต๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ๊ธฐ์กด์ ๋ง๋ค์ด์ง ๋ฐํ์ ๊ทธ๋๋ก ์ ์ง๋ฉ๋๋ค.
ํ์ง๋ง main ๋ธ๋์น๋ก ๋์๊ฐ๋ค๋ฉด, HEAD์จ๋ ์๋ก์ด ๊ธธ์ ๊ธฐ์ตํ์ง ๋ชปํฉ๋๋ค(๋ค์ feature/#1์ผ๋ก ์ด๋ํ๋ฉด ๋ง์ง๋ง ์ปค๋ฐ ์ํ๋ฅผ ๊ทธ๋๋ก ๋ฐ์ํ๊ธดํจ). ๊ธธ์ ์์ด์ง์ง ์์ง๋ง, HEAD์จ์ ์์ผ์์๋ ํ์ธํ ์ ์๋ ๊ฒ์ด์ฃ .
์ผ๋จ์ ๊ณ์ํด์ ๋ฐํ์ ๋ง๋ค์ด์ค์๋ค. ๊ฝ์ ๋ค๋ค๋ฅธ ํค๋์จ๐
๐ก์ ๋ฆฌ
๋ธ๋์น์ ์ปค๋ฐ์์์ฑํ๋ฉด ํด๋น ๋ธ๋์น์ ๊ณ ์ ํ ํ์คํ ๋ฆฌ๊ฐ ์์๋ฉ๋๋ค.
๐ก์ ๋ฆฌ
Git์์ ์ปค๋ฐ์ ํญ์ ์ด์ ์ปค๋ฐ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๋ฉฐ ์๊ฐ์์ผ๋ก ์์ผ๋ก๋ง ๋์๊ฐ๋๋ค,
๐ก์ ๋ฆฌ
๊ฝ์ ๋ณด๊ธฐ ์ํด ์๋ก์ด ๊ธธ์ ๋ง๋ ๊ฒ์ฒ๋ผ, ๋ธ๋์น ๋ถ๊ธฐ๋ ํน์ ํ ๋ชฉ์ (๊ธฐ๋ฅ ๊ฐ๋ฐ, ๋ฒ๊ทธ ํฝ์ค, ๋ฐฐํฌ ๋ฑ)์ ์ํด ์ฌ์ฉํฉ๋๋ค.
5. ๋ ๋ง์ ๊ฐ๋ฆผ๊ธธ
์๋ก์ด ๊ธธ์ ์ผ๋ง๋ ์ง ๋ง๋ค ์ ์์ต๋๋ค.
HEAD์จ๋ ์ด๋๋ก๋ ์์ ์์ฌ๋ก ์ด๋ํ ์ ์์ง๋ง, "์ง๋์จ ๊ฒฝ๋ก"์ ํ์ ๋ฉ๋๋ค. feature/#1๊ณผ feature/#2๋ main์ ๊ธฐ์ค์ผ๋ก ๊ฐ๋ฆผ๊ธธ์ด๊ธฐ ๋๋ฌธ์, feature/#2 ๋ก ๊ฐ HEAD์จ๋ feature/#1์ ์์ง ๋ชปํ๊ณ feature/#1์ผ๋ก ๊ฐ๋ feature/#2 ๋ ์ ์ ์์ต๋๋ค.
๐ก์ ๋ฆฌ
๊ฐ ๋ธ๋์น๋ ๋ ๋ฆฝ์ ์ด๋ฉฐ, ๋ค๋ฅธ ๋ธ๋์น์ ๋ด์ฉ์ ์ง์ ์ ์ ์์ต๋๋ค.
6. ๊ฐ๋ฆผ๊ธธ ํฉ์น๊ธฐ: Merge
๊ฝ์ ๋ฐ๊ณ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ HEAD์จ. ์ด์ ๋ค์ ๊ฐ๋๊ธธ ๊ฐ์ผํฉ๋๋ค.
main์ ๋ง์ง๋ง ๋ฐํ์ผ๋ก ์ด๋ํ HEAD์จ๋ ๋ค๋ฅธ ๊ธธ์ ๋ด์ฉ์ ์ ์ ์๋ค๊ณ ํ๋๋ฐ์, feature/#1์ ๊ธธ์ ๊ธฐ์ตํ๊ณ ๋ main์ ์์ ์ ์๋ ๋ฐฉ๋ฒ, ๋น์ฐํ ์์ต๋๋ค.
git merge feature/#1
merge๋ฅผ ํ๋ฉด feature/#1 ๋ธ๋์น์์ ์ง๋์จ ๊ธธ์ด main ๋ธ๋์น์ ํตํฉ๋ฉ๋๋ค. ์ด์ main ๋ธ๋์น์ ๋ง์ง๋ง ๋ฐํ์ feature #1 ๊ฒฝ๋ก๋ฅผ ํฌํจํ, ํตํฉ๋ ๊ธธ์ด ๋ฉ๋๋ค. HEAD ์จ๋ main ๋ธ๋์น์์ feature/#1์ ๊ฝ๊ธธ์ ๊ธฐ์ตํ๋ฉฐ ์ฌํ์ ๊ณ์ํ ์ ์์ต๋๋ค.
main์ feature/#2๋ก merge ํ๋ค๋ฉด, feature/#1๊ณผ main์ ๊ธฐ์ต์ ๊ฐ์ง feature/#2๊ฐ ๋๊ฒ ์ฃ .
๐ก์ ๋ฆฌ
merge๋ ๋ ๊ฐ์ ๋ธ๋์น ํ์คํ ๋ฆฌ๋ฅผ ํ๋๋ก ํตํฉํ๋ ์์ ์ ๋๋ค.
๐ก์ ๋ฆฌ
merge ํ main ๋ธ๋์น์ ๋ง์ง๋ง ์ปค๋ฐ์ feature/#1์ ๋ชจ๋ ์์ ๋ด์ฉ์ ํฌํจํฉ๋๋ค.
์ ๋ฆฌ: HEAD๋ ์ธ์ ๋ ํ์ฌ ์์น๋ฅผ ๊ฐ๋ฆฌํจ๋ค
๊ทธ๋ฆผ์ผ๋ก ๊ฐ๋จํ๊ฒ HEAD์ ๋์์ ๊ทธ๋ ค๋ณด์์ต๋๋ค. ์ ๋ฆฌํด๋ณด์๋ฉด, HEAD๋ ๋ณธ์ง์ ์ผ๋ก ํ์ฌ ์์
์ค์ธ ๋ธ๋์น์ ์ต์ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์
๋๋ค. ์ด ํฌ์ธํฐ๋ ๋ธ๋์น์ ํ๋ฆ์ ๋ฐ๋ผ ๊ณ์ํด์ ์ด๋ํ๋ฉฐ, ์๋ก์ด ์ปค๋ฐ์ด ์์ฑ๋ ๋๋ง๋ค ์
๋ฐ์ดํธ ๋ฉ๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, HEAD๋ ์ธ์ ๋ "ํ์ฌ ์ํ"๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๋ฉฐ, ๊ฐ๋ฐ์์๊ฒ ์์
์ค์ธ ์์น๋ฅผ ๋ช
ํํ๊ฒ ์๋ ค์ฃผ๋ ์ญํ ์ ํ๋ ๊ฒ์ด์ฃ .
์ถ๊ฐ: Detached HEAD
HEAD๊ฐ ๋ธ๋์น์ ์ฐ๊ฒฐ๋์ง ์๊ณ , ํน์ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ, ์ด ์ํ๋ฅผ Detached HEAD๋ผ๊ณ ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก HEAD๋ ํน์ ๋ธ๋์น์ ์ต์ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค์ง๋ง ํน์ ๋ธ๋์น๊ฐ ์๋ ์ง์ ์ ์ธ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ ๊ฒฝ์ฐ์
๋๋ค.
๋ฐ์ ๊ฒฝ์ฐ๋
1. ํน์ ์ปค๋ฐ์ผ๋ก ์ฒดํฌ์์ ํ ๋: git checkout <commit-hash> ๋ช
๋ น์ด๋ก ํน์ ์ปค๋ฐ์ ์ง์ ์ฒดํฌ์์ํ๋ฉด Detached HEAD ์ํ๊ฐ ๋ฉ๋๋ค.
2. ํน์ ํ๊ทธ๋ฅผ ์ฒดํฌ์์ ํ ๋๋ Detached HEAD ์ํ๊ฐ ๋ ์ ์์ต๋๋ค.
์ด ๋ HEAD๋ ํน์ ์ปค๋ฐ๋ง์ ๊ฐ๋ฆฌํค๊ธฐ ๋๋ฌธ์ ์๋ก์ด ์ปค๋ฐ์ ์์ฑํ๋ฉด ๊ทธ ์ปค๋ฐ์ ๋ธ๋์น๊ฐ ์์ด์ ๊ณ ๋ฆฝ๋ ์ํ๊ฐ ๋ฉ๋๋ค. ๋์ค์ ๋ค๋ฅธ ๋ธ๋์น๋ก ์ด๋ํ๋ฉด ํด๋น ์ปค๋ฐ์ ์ฐธ์กฐํ๊ธฐ ์ด๋ ค์์ง๋๋ค.
ํน์ ์ํฉ์์ ๊ณ ์์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ๋ ํ์ง๋ง, ์ค์ํ ์์
์ ํ ๋๋ ์์ค์ด ๋์ง ์๊ฒ ํญ์ ๋ธ๋์น๋ฅผ ์์ฑํ์ฌ ์์
ํ๊ธฐ!
์ง๊ธ๊น์ง HEAD๋ฅผ ์์๋ณด์์ต๋๋ค. ์ฌ์ค ์ง๊ธ๊ป Git์ ์ฌ์ฉํ๋ฉด์๋ HEAD๋ฅผ ๋ณผ ๋๋ง๋ค ํ๋ฆฐ ๋ ํ๊ณค ํ๋๋ฐ, ๊ทธ๋ฆผ์ผ๋ก ๋ณด๋ ์ดํด๊ฐ ์ฌ์ ๋ ๊ฒ ๊ฐ์ต๋๋ค. Git์ ์ดํดํ๊ณ ํ์ฉํ๋๋ฐ ๋ง์ ๋์์ด ๋์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.!
https://www.yes24.com/Product/Goods/133290567
'๐ฅ๏ธdevelop > Github' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊น&๊นํ๋ธ] ๊ฐ๋ฐ์์ ์์ํ ๋๋ฐ์ Git ์ฝ๊ฒ ์์ํ๊ธฐ (7) | 2024.11.17 |
---|