์์ ์ค๋ช ํ๋ ๊ฒ๋ค์ ๋จ์ํ ๋ช ๋ น์ด์ ๋ํด์๋ง ์ค๋ช ์ ํ๊ณ , ๋ณธ๊ฒฉ์ ์ผ๋ก git์ ์ฐ๋ ค๋ฉด ๋ธ๋์น๋ผ๋ ๊ฒ์ ์ดํดํด์ผ ํ๋๊ฒ ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค.
๋ธ๋์น(branch)๋?
๋ธ๋์น๋ ๋ฒ์ ์ ๋ถ๊ธฐ๋ผ๊ณ ํ๋๋ฐ, ์ฝ๊ฒ ๋งํด์ ์ฌ๋ฌ ๊ฐ์ ๋ฒ์ ์ ํ๋ฆ์ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ์ด๋ผ ํ ์ ์๋ค.
๋ง์ฝ ๋ธ๋์น๊ฐ ์๋ค๋ฉด ์ด๋ค ๋จ์ ์ด ์์๊น?
์๋ฅผ ๋ค์ด, ์ผํ๋ชฐ์ ๋ง๋ค๊ณ ์๋๋ฐ A ๊ฐ๋ฐ์๋ ์ฃผ๋ฌธ ๋ชฉ๋ก ์กฐํ ๊ธฐ๋ฅ์ ์์ ํ๊ณ ์๊ณ , B ๊ฐ๋ฐ์๋ ์ฅ๋ฐ๊ตฌ๋ ๊ธฐ๋ฅ์ ์์ ํ๊ณ ์๋ค๊ณ ๊ฐ์ ํ์.
๊ทธ๋ผ A๊ฐ๋ฐ์๊ฐ ์์ ํ ๋ด์ฉ๊ณผ B๊ฐ๋ฐ์๊ฐ ์์ ํ ๋ด์ฉ์ ์ผ์ผ์ด ๋์กฐํ์ฌ ์ฝ๋๋ฅผ ํฉ์ณ์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ํฉ์น๋ ๊ณผ์ ์์๋ ์ค์๊ฐ ๋ฐ์ํ ์ ์๋ค.
์ค์ ๋ก ์ ํ์ฌ์์๋ TFS๋ก ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ๋๋ฐ... TFS๋ ๋๊ฐ ์ด๋ค ์ฝ๋๋ฅผ ์์ ์ค์ด๋ฉด ๊ทธ ํ์ผ์ ๋ค๋ฅธ ์ฌ๋์ด ๊ฑด๋ค์ง ๋ชปํ๋ค.. ๋จผ์ ์์ ํ๊ณ ์๋ ์ฌ๋์ด ์ปค๋ฐํ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผํจ.. ์ด๋ฌํ ๋ถํธํจ์ ๋๊ผ๊ธฐ ๋๋ฌธ์ ์ ๋ง์ ํ์ฌ๋ค์ด git์ ์ด์ฉํ์ฌ ๋ฒ์ ๊ด๋ฆฌ ํ๊ณ ์๋์ง ๋ชธ์ ๋๊ผ๋ค.
๋ธ๋์น๋ ๋ฒ์ ์ ๋๋๋ค๊ณ ํ๋๋ฐ, ๋๋๊ธฐ ์ํด์๋ ๊ธฐ์ค์ด ๋๋ ๋ธ๋์น๊ฐ ์๊ณ ๊ทธ ๊ธฐ์ค ๋ธ๋์น๋ก ๋ฒ์ ์ ๋๋ ์ผ ํ๋๋ฐ ์ฌ๊ธฐ์ ๊ธฐ์ค์ด ๋๋ ๋ธ๋์น๊ฐ ๋ฐ๋ก master๋ธ๋์น์ด๋ค. (master ๋ธ๋์น ๋๋ main ๋ธ๋์น๋ผ๊ณ ๋ถ๋ฅธ๋ค. master/slave ๋จ์ด๊ฐ ๋ ผ๋์ด ์๊ธฐ์.. main์ผ๋ก ๋ฐ๋์๋ค๊ณ ํจ.)
git init ์ ์๊ธฐ๋ ๊ธฐ๋ณธ ๋ธ๋์น ๋ช ์ master๊ฐ ์๋ main์ผ๋ก ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ
git config --global init.defaultBranch main
๋ธ๋์น๋ฅผ ๊ณต๋ถํ๋ฉด์ ํน์ ์ฉ์ด๋ค์ ์์์ผ ํ๋๋ฐ, ๊ทธ ์ค ํ๋์ธ HEAD๋ฅผ ์์๋ณด์.
HEAD๋?
ํ์ฌ ์์ ์ค์ธ ๋ธ๋์น์ ์ปค๋ฐ์ ๊ฐ๋ฆฌํจ๋ค. ์ฝ๊ฒ ๋งํด์ ๋ด๊ฐ ์ง๊ธ ์ด๋ค ๋ธ๋์น์์ ์์ ์ค์ธ๊ฐ๋ฅผ ์๋ ค์ฃผ๋ ์ด์ ํ๋ค.
์๋์ ์ฌ์ง๊ณผ ๊ฐ์ด log ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ์ปค๋ฐ ๋ฉ์์ง ์์ (HEAD -> main)์ด๋ผ๊ณ ํ์๋๋๋ฐ, ํ์ฌ ๋ด๊ฐ main ๋ธ๋์น๋ฅผ ๋ณด๊ณ ์๋ค๋ ์๋ฏธ์ด๋ค.
์๋๋ฉด ํฐ๋ฏธ๋์ ๋ณด๋ฉด main์ด๋ผ๊ณ ์ด๋ก์์ผ๋ก ํ์๋ ๋ถ๋ถ์ด ์๋๋ฐ, ํ์ฌ ๋ด๊ฐ ์ฒดํฌ์์ํ๊ณ ์๋ ๋ธ๋์น๋ช ์ด ํ์๋๋๊น ์ด๊ฑธ ์ฐธ๊ณ ํด๋ ๋๋ค.
๋ธ๋์น ์์ฑ
git branch <๋ธ๋์น๋ช
>
ํด๋น ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ ์๋ก์ด ๋ธ๋์น๋ฅผ ์์ฑํ ์ ์๋ค.
git branch
๊ทธ๋ฆฌ๊ณ ๋ธ๋์น๋ช ์ ๋นผ๊ณ ์ด ๋ช ๋ น์ด๋ง ์ ๋ ฅํ๋ฉด ๋ธ๋์น ๋ชฉ๋ก์ ์กฐํํ ์ ์๋ค.
์๋์ ์ฌ์ง๊ณผ ๊ฐ์ด 'foo' ๋ผ๋ ๋ธ๋์น๋ฅผ ์์ฑํ๊ณ ๋ธ๋์น ๋ชฉ๋ก์ ํ์ธํ๋ค. (๋ธ๋์น๋ช ์์ *ํ ๋ฐ ์ด๋ก์์ผ๋ก ํ์๋ ๋ธ๋์น๊ฐ ๋ด๊ฐ ํ์ฌ ์ฒดํฌ์์ํ๊ณ ์๋ ๋ธ๋์น๋ผ๋ ํ์๋ค.)
์ฒดํฌ์์(chekout)
์ฒดํฌ์์์ด๋ผ๋ ๊ฒ์ ํน์ ๋ธ๋์น๋ก ์ด๋ํ๋ค๋ ์๋ฏธ์ธ๋ฐ, ์์ ์ฌ์ง์ ๋ณด๋ฉด ํ์ฌ ๋ด๊ฐ main ๋ธ๋์น๋ฅผ ์ฒดํฌ์์ํ๊ณ ์๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
๊ทธ๋ผ ์์ ์ฌ์ง์์ 'foo' ๋ธ๋์น๋ฅผ ์ฒดํฌ์์ ํด๋ณด์.
git checkout <๋ธ๋์น๋ช
>
ํด๋น ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ ์ฒดํฌ์์ํ๋ฉด ๋๋ค.
ํด๋น ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ์๋์ ์ฌ์ง๊ณผ ๊ฐ์ด ์ด๋ก์์ผ๋ก 'main' ์ด๋ผ๊ณ ํ์๋๋ ๋ถ๋ถ์ด 'foo'๋ผ๊ณ ๋ฐ๋ ๊ฒ์ด๋ค.
'foo' ๋ธ๋์น์์ ํ ์คํธ ํ์ผ์ ๋ง๋ค๊ณ ์ปค๋ฐ์ ์ด 2๋ฒ ๋ฐ๋ณตํ๊ณ , log๋ฅผ ํ์ธํด๋ณด๋ฉด ์๋์ ์ฌ์ง๊ณผ ๊ฐ์ด ์กฐํ๋ ๊ฒ์ด๋ค. ํ์ฌ HEAD๋ 'foo' ๋ธ๋์น์ด๊ณ , foo ๋ธ๋์น๋ foo 2๊น์ง ์ปค๋ฐ์ด ๋์ด์๊ณ , main ๋ธ๋์น๋ master3๊น์ง ์ปค๋ฐ์ด ๋์ด์๋ค๋ ์๋ฏธ์ด๋ค.
๊ทธ๋์ foo ๋ธ๋์น๋ฅผ ์ฒดํฌ์์ํ๊ณ ์๋ ์ํ์์ ls๋ก ํ์ผ ๋ชฉ๋ก์ ํ์ธํด๋ณด๋ฉด ์๋์ ์ฌ์ง๊ณผ ๊ฐ์ด 5๊ฐ์ ํ์ผ์ด ๋ณด์ผ ๊ฒ์ด๋ค.
main ๋ธ๋์น๋ c.txt๋ฅผ ์์ฑํ๊ฒ ๋ง์ง๋ง ์ปค๋ฐ์ด๊ธฐ ๋๋ฌธ์ ์๋์ ์ฌ์ง๊ณผ ๊ฐ์ด 3๊ฐ์ ํ์ผ๋ง ๋ณด์ผ ๊ฒ์ด๋ค.
์ฐธ๊ณ ๋ก ๋ธ๋์น ์์ฑ ๋ฐ ์ฒดํฌ์์์ ํ๋ฒ์ ํ๋ ๋ฐฉ๋ฒ์ด ์๋๋ฐ, ์๋์ ๋ช ๋ น์ด๋ฅผ ์ฐธ๊ณ ํ๋ฉด ๋๋ค.
git checkout -b <๋ธ๋์น๋ช
>
์์ ์์ ์ ํ์ฌ ์๋์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ธ๋์น๊ฐ ๊ตฌ์ฑ๋์๋ค.
'๐๏ธ git' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[git] GitHub ์ฐ๋ (MacOS) (0) | 2023.03.27 |
---|---|
[git] 08 - ๋ธ๋์น ๋ณํฉ (merge) (0) | 2023.03.27 |
[git] 06 - ์์ ์์ ์ ์ฅํ๊ธฐ (stash) (0) | 2023.03.27 |
[git] 05 - ์ปค๋ฐ ๋๋๋ฆฌ๊ธฐ (revert, reset) (0) | 2023.03.23 |
[git] 04 - ์ปค๋ฐ ๋น๊ต (diff) (0) | 2023.03.23 |