https://learngitbranching.js.org/?locale=ko ์ฌ์ดํธ๋ฅผ ํตํ ๊ณต๋ถ ๋ฐ ํด๋น ์ฌ์ดํธ ๋ต์ ๊ธฐ๋ก์ ๋๋ค.
# Git ์ปค๋ฐ
> ์ปค๋ฐ์ ์์ ์ฌํญ์ ์ค๋ ์ท์ด์ง๋ง, ํ ๋๋ง๋ค ๋๋ ํ ๋ฆฌ ์ ์ฒด๋ฅผ ๋ณต์ฌํ์ง ์๋๋ค.
๊ฐ ์ปค๋ฐ์ ์ด์ ๋ฒ์ ๊ณผ ๋ค์ ๋ฒ์ ์ ๋ณ๊ฒฝ๋ด์ญ(== delta)์ ์ ์ฅํ๋ฉฐ, ๊ทธ๋์ ์ปค๋ฐ๋ค์ ๊ทธ ์ปค๋ฐ ์์ ๋ถ๋ชจ ์ปค๋ฐ์ ๊ฐ๋ฆฌํจ๋ค.
Answer $ git commit $ git commit |
# Git์์ ๋ธ๋์น ์ฐ๊ธฐ
> ๋ธ๋์น๋ ํน์ ์ปค๋ฐ์ ๋ํ ์ฐธ์กฐ(reference) ์ ๋๋ก ๊ฐ๋ณ๋ค.
๋จ์ํ ๋ธ๋์น๋ ํ๋์ ์ปค๋ฐ๊ณผ ๊ทธ ๋ถ๋ชจ ์ปค๋ฐ๋ค์ ํฌํจํ๋ ์์ ๋ด์ญ์ด๋ผ๊ณ ์๊ฐํ์.
๋ธ๋์น ๋ง๋ค๊ธฐ git branch ๋ธ๋์น๋ช ํ๋ฉด, ํ์ฌ ์์ ์ค ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ ๋ธ๋์น๊ฐ ์์ฑ๋๋ค.
์ด ๋ธ๋์น๋ก ์ด๋ํ๊ณ ์ถ์ผ๋ฉด git checkout ๋ธ๋์น๋ช ํ๋ค.
ํ์ฌ ๋ธ๋์น์๋ ๋ณํ๊ฐ ๋ถ์ด ์๋ค.
Answer $ git branch bugFix $ git checkout bugFix |
# ๋ธ๋์น์ ํฉ์น๊ธฐ
> git merge๋ ๋๊ฐ์ ๋ถ๋ชจ๋ฅผ ๊ฐ๋ฆฌํค๋ ํน๋ณํ ์ปค๋ฐ์ ๋ง๋ ๋ค.
๋ ๊ฐ์ ๋ถ๋ชจ๊ฐ ์๋ ์ปค๋ฐ์ด๋ผ๋ ๊ฒ์ “ํ ๋ถ๋ชจ์ ๋ชจ๋ ์์ ๋ด์ญ” + “๋๋จธ์ง ๋ถ๋ชจ์ ๋ชจ๋ ์์ ” + “๋ ๋ถ๋ชจ์ ๋ชจ๋ ๋ถ๋ชจ์ ์์ ๋ด์ญ”์ ์๋ฏธํ๋ค.
bugFix ๋ธ๋์น๋ฅผ main ๋ธ๋์น์ merge ํ๊ธฐ
$ git merge bugFix
ํ์ฌ main ๋ธ๋์น์์ ์์ ์ค์ด๋ main ๋ธ๋์น์ bugFix ๋ธ๋์น๋ฅผ ๋จธ์ง ํ๋ค.
๋จธ์ง ๊ฒฐ๊ณผ main์ ๋ ๋ถ๋ชจ๊ฐ ์๋ ์ปค๋ฐ์ ๊ฐ๋ฆฌํจ๋ค.
์ ์ํ์์
git checkout bugFix
git merge main
์ ํ๋ฉด bugFix ๋ธ๋์น๋ก ํ์ฌ ํ๋ ๋ธ๋์น๊ฐ ๋ํ, ๋ฉ์ธ ๋ธ๋์น์ bugFix๊ฐ merge๋๋ค. ์๋์ฒ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋๋ค.
Answer $ git branch bugFix $ git checkout bugFix $ git commit $ git checkout main $ git commit $ git merge bugFix |
# Git ๋ฆฌ๋ฒ ์ด์ค(Rebase)
> ๋ธ๋์น๋ผ๋ฆฌ ์์ ์ ์ ๋ชฉํ๋ ๋๋ฒ์งธ ๋ฐฉ๋ฒ์ ๋ฆฌ๋ฒ ์ด์ค(rebase)์ด๋ค.
๋ฆฌ๋ฒ ์ด์ค๋ ์ปค๋ฐ๋ค์ ๋ชจ์์ ๋ณต์ฌํ ๋ค, ๋ค๋ฅธ ๊ณณ์ ๋จ๊ถ ๋๋ ๊ฒ์ด๋ค.
๋ฆฌ๋ฒ ์ด์ค๋ฅผ ํ๋ฉด ์ปค๋ฐ๋ค์ ํ๋ฆ์ ๋ณด๊ธฐ ์ข๊ฒ ํ ์ค๋ก ๋ง๋ค ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
๋ฆฌ๋ฒ ์ด์ค๋ฅผ ์ฐ๋ฉด ์ ์ฅ์์ ์ปค๋ฐ๋ก๊ทธ์ ์ด๋ ฅ์ด ํ๊ฒฐ ๊นจ๋ํด์ง๋ค.
์ด ์ํ์์, bugFix์ ์์ ์ main ๋ธ๋์น ์๋ก ์ง์ ์ฎ๊ฒจ ๋์ผ๋ฉด ๋ ๊ธฐ๋ฅ์ ๋ฐ๋ก ๊ฐ๋ฐ ํ์ง๋ง ๋ง์น ์์ ๋๋ก ๊ฐ๋ฐํ ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค.
$ git rebase main
์ด ์ํ์์ main๋ธ๋์น๋ฅผ bugFix๋ธ๋์น ์ชฝ์ผ๋ก ๋ฆฌ๋ฒ ์ด์ค ํ๋ฉด
$ git rebase bugFix
์ด๋ ๊ฒ ๋๋ค.
Answer $ git branch bugFix $ git checkout bugFix $ git commit $ git checkout main $ git commit $ git checkout bugFix $ git rebase main |
# Git์์ ์ฌ๊ธฐ์ ๊ธฐ๋ก ์ฎ๊ฒจ ๋ค๋๊ธฐ
> ์ปค๋ฐ ํธ๋ฆฌ(Commit tree)์์ ์ด๋ ํ ์ ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ๋ค์ ์๋ ๊ฒ์ ์ค์ํ๋ค.
HEAD .
HEAD๋ ํ์ฌ ์ฒดํฌ์์๋ ์ปค๋ฐ์ ๊ฐ๋ฆฌํจ๋ค.
์ฆ ํ์ฌ ์์ ์ค์ธ ์ปค๋ฐ์ ์๋ฏธํ๋ค.
HEAD๋ ํญ์ ์์ ํธ๋ฆฌ์ ๊ฐ์ฅ ์ต๊ทผ ์ปค๋ฐ์ ๊ฐ๋ฆฌ์ผ์, ์์ ํธ๋ฆฌ์ ๋ณํ๋ฅผ ์ฃผ๋ git ๋ช ๋ น์ด๋ค์ ๋๋ถ๋ถ HEAD๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ผ๋ก ์์ํ๋ค.
์ผ๋ฐ์ ์ผ๋ก HEAD๋ ๋ธ๋์น์ ์ด๋ฆ์ ๊ฐ๋ฆฌํค๊ณ ์๋ค. ์ปค๋ฐ์ ํ๊ฒ ๋๋ฉด bugFix์ ์ํ๊ฐ ๋ฐ๋๊ณ ์ด ๋ณ๊ฒฝ์ HEAD๋ฅผ ํตํด ํ์ธ ๊ฐ๋ฅํ๋ค.
https://kotlinworld.com/272 (< - HEAD๋ ํน์ ๋ธ๋์น์ ๋ง์ง๋ง ์ปค๋ฐ์ ๋ํ ํฌ์ธํฐ์ด๋ค.)
> HEAD๋ฅผ ๋ถ๋ฆฌํ๊ธฐ : HEAD๋ฅผ ๋ธ๋์น ๋์ ์ปค๋ฐ์ ๋ถ์ด๋ ๊ฒ์ ์๋ฏธํ๋ค.
Answer HEAD๋ฅผ bugfix์์ ๋ถ๋ฆฌํ๊ณ ๊ทธ ์ปค๋ฐ์ ๋ถ์ฌ๋ผ. $ git checkout c4 |
# ์๋์ฐธ์กฐ(^)
> ์ค์ ๋ก Git ์ฌ์ฉ์ ์ ์ฒ๋ผ c4 ์ปค๋ฐ ๊ฐ์ธ ํด์๋ฅผ ํ์ธํ๋ ค๊ณ ํ๋ฉด git log๋ฅผ ๊ณ์ ์ณ์ผ ํ๋ค.
์ปค๋ฐ๋ค์ ํด์๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ๋ถํธํ ์ ์๋๋ฐ, ๊ทธ๋์ Git์ ์๋์ฐธ์กฐ๊ฐ ๋ฑ์ฅํ๋ค.
ํ ๋ฒ์ ํ ์ปค๋ฐ ์๋ก ์์ง์ด๋ ^ (์บ๋ฟ)
ํ ๋ฒ์ ์ฌ๋ฌ ์ปค๋ฐ ์๋ก ์์ง์ด๋ ~ (ํธ๋)
์๋ ๊ฒ 2๊ฐ์ง๊ฐ ์๋ค.
์๋ก, git checkout main^ ์ด๋ ๊ฒ ์ณค๋ค๋ฉด, main ๋ธ๋์น์ ํ ๋จ๊ณ ๋ถ๋ชจ๋ก HEAD๊ฐ ์ด๋ํ๋ค.
Answer bugFix์ ๋ถ๋ชจ ์ปค๋ฐ ์ฒดํฌ์์ ํ๋ผ(์๋ ์ฐธ์กฐ ์ฌ์ฉํด๋ผ) $ git checkout bugFix^ |
'Git' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Git ๊ณต๋ถ๋ฒ :: Git ๊ณต๋ถ ์ฐ์ต ์ฌ์ดํธ::learngitbranching.js.org (0) | 2022.10.12 |
---|---|
github ์ด์ค ์ธ์ฆ :: remote: Repository not found. (0) | 2021.08.18 |
๋๊ธ