Git ๋ด๋ถ ๋์ ํํค์น๊ธฐ - Part 2
- #Git
- #branch
- #reset
- #revert
- #rebase
- #HEAD
- #log
- #diff
๋ค์ด๊ฐ๋ฉฐ
์๋ ํ์ธ์. ์๋์ ๋ชจ๋ฐ์ผํ์์ ์ฑ ๊ฐ๋ฐ์ ๋งก๊ณ ์๋ ์ดํ์ฐ์ ๋๋ค.
์ง๋๋ฒ ํฌ์คํธ์ ์ด์ด์ ์ค๋์ Git์์ ์ค์ํ ์ญํ ์ ๋ด๋นํ๋ ๋ช ๋ น์ด๋ค์ ๋ํด์ ๋ ์์ธํ ์ดํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ง์ฝ Part1์ ๋ณด์์ง ๋ชปํ ๋ถ๋ค๊ป์๋ ์ด์ ํฌ์คํธ๋ฅผ ๋ณด๊ณ ์ค๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค!
0) Branch
branch๋, ๋์ผํ ์ฝ๋ ๋ฒ ์ด์ค๋ก๋ถํฐ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐ ์์ ์ ์ํํ๊ธฐ ์ํ ๊ธฐ๋ฅ์ ๋๋ค.
Git์์ master(main) ๋ธ๋์น๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋๋ ์ฒซ ๋ฒ์งธ ๋ธ๋์น์ด๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋ฐ ๊ณผ์ ์์ ๊ฐ์ฅ ์์ ์ ์ธ ์ฝ๋๊ฐ ์๋ ๋ธ๋์น๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฐ ๊ณผ์ ์์ master ๋ธ๋์น์์ ์์ ํ๋ ๊ฒ์ ๊ถ์ฅํ์ง ์๊ณ ๋ค๋ฅธ ๋ธ๋์น์์ ์์ ํ ๋ด์ฉ์ master ๋ธ๋์น๋ก ๋ณํฉํ๋ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ๊ด๋ฆฌํ๊ฒ ๋ฉ๋๋ค.
๋ณดํต branch๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฑฐ๋ ๋ฒ๊ทธ๋ฅผ ์์ ํด์ผ ํ ๊ฒฝ์ฐ ์์ฑํฉ๋๋ค.
์ค๋์ ๋ฐ๋ก ์ด ์์ฑ๋ branch์์ ๊ฐ์ ์์ ํ๋ฉด์ ์ฌ์ฉํ๋ ๋ช ๋ น์ด๋ค์ ๋ํด ์์ธํ ์์๋ณด๊ณ ์ ํฉ๋๋ค.
1) log VS diff
์ฒ์์ผ๋ก ๋ง์๋๋ฆด ๋ด์ฉ์ branch์ ์ ๋ณด ํ์ธ ๋ฐ ์ฐจ์ด๋ฅผ ์ ์ ์๋ log์ diff์ ๋๋ค.
1-1) log
git log๋ Git ์ ์ฅ์์ ํ์ฌ ๋ธ๋์น์ ๋ํ ์ปค๋ฐ ์ด๋ ฅ์ ์กฐํํ๋ ๋ช ๋ น์ด๋ก ์ปค๋ฐ ์๊ฐ์์ผ๋ก ์ ๋ ฌ๋์ด ๋ํ๋ฉ๋๋ค. ๊ฐ ์ปค๋ฐ ์ด๋ ฅ์๋ ์ปค๋ฐ์ ํด์๊ฐ, ์์ฑ์, ์์ฑ์ผ์, ์ปค๋ฐ ๋ฉ์์ง ๋ฑ์ด ํ์๋ฉ๋๋ค.
branch๋ Git์์ ์ปค๋ฐ ์ด๋ ฅ์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ ๋๋ค. ํ์ฌ ๋ธ๋์น์ ๊ฐ์ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ฉด ์ปค๋ฐ ์ด๋ ฅ์ ๊ณต์ ํ๋ฉฐ, ์ดํ ๋ธ๋์น์์ ์๋ก์ด ์ปค๋ฐ์ด ์ถ๊ฐ๋๋ฉด ํด๋น ๋ธ๋์น์ ํฌ์ธํฐ๊ฐ ๋ณ๊ฒฝ๋์ด ๋ค๋ฅธ ๋ธ๋์น์ ์ปค๋ฐ ์ด๋ ฅ๊ณผ ๋ณ๊ฐ๋ก ํด๋น ๋ธ๋์น ๋ด์์๋ง ์ด๋ ฅ์ด ๊ด๋ฆฌ๋ฉ๋๋ค.
์ด๋ฅผ ์ค์ตํ ๋ด์ฉ์ ํ ๋๋ก ๋ ๊น๊ฒ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์๋ ์ฌ์ง์ main์์ f1.text ํ์ผ์ ์์ฑ ํ ์ฒซ ๋ฒ์งธ commit, ์์ ํ ๋ ๋ฒ์งธ commit์ ํ ์ํ์์ git log๋ฅผ ํ ๊ฒฐ๊ณผ์ ๋๋ค.
์ด ์ํ์์ ์ ๋ธ๋์น feature๋ก checkout ํ git log์ ์ฐ๊ฒ ๋๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
main ๋ธ๋์น์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ ์ํ์ธ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ด ์ํ์์ f1.text์ ๋ด์ฉ์ ๋ค์ ํ๋ฒ ์์ ํ ์ธ ๋ฒ์งธ commit์ ํ๊ณ git log๋ฅผ ๋ณด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
๋๋ค์ git main์ผ๋ก checkout ํ git log๋ฅผ ๋ณด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
์ด๋ ๊ฒ ๋ธ๋์น๋ฅผ ์์ฑํ๋ฉด, ํ์ฌ ์์ ์ค์ธ ์์ค ์ฝ๋์ ํน์ ์ง์ ์ ๊ฐ๋ฆฌํค๋ ์๋ก์ด ์ฐธ์กฐ ํฌ์ธํธ๊ฐ ์์ฑ๋ฉ๋๋ค. ์ด๋, ์๋ก์ด ๋ธ๋์น๋ ๊ธฐ์กด ๋ธ๋์น์ ์ด๋ ฅ์ ๊ทธ๋๋ก ์ด์ด๋ฐ์ ์์ ์ ์งํํ ์ ์์ด ๊ฐ๊ฐ์ ๊ฐ๋ฐ์๋ค์ด ๋์์ ์์ ์ ์งํํ ๋, ๊ฐ์์ ๋ธ๋์น์์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ ์ ์งํํ ์ ์๊ฒ ๋ฉ๋๋ค.
์ด๋ฒ์๋ ์๋์ ๊ฐ์ด ์ถ๊ฐ์ ์ธ ์์ ์ ํ ํ log์ ์ต์ ๋ค์ ๋ํด์ ์ดํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
- feature์ f1.text ๋ด์ฉ ์์ ํ commit(message : 4)์ ํ๊ธฐ ( HEAD โ feature )
- main์ f1.text ๋ด์ฉ ์์ ํ commit(message : 5)์ ํ๊ธฐ ( HEAD โ main )
main์ ์์ ๋ git log๋ฅผ ์ฐ์ผ๋ฉด main์ ๋ํ ์ปค๋ฐ ์ด๋ ฅ๋ง ๋ํ๋ฉ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก feature๋ก ์ฒดํฌ์์ํ ํ git log๋ฅผ ์ฐ์ผ๋ฉด feature์ ๋ํ ์ปค๋ฐ ์ด๋ ฅ๋ง ๋ํ๋ฉ๋๋ค.
๋ง์ฝ ๋ชจ๋ ๋ธ๋์น์ ์ปค๋ฐ ๋ด์ฉ์ ๋ณด๊ณ ์ถ๋ค๋ฉด, --branches
์ต์
์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
git log --branches
๋ง์ฝ Git Log(๋ธ๋์น ์์
ํ๋ฆ, ๋ณํฉ ๋ฑ)๋ฅผ ์๊ฐ์ ์ผ๋ก ํ์ธํ๊ณ ์ถ๋ค๋ฉด, --graph
์ต์
์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
--graph
์ต์
์ ๊ฐ ์ปค๋ฐ์ ํด์๊ฐ, ์ปค๋ฐ ๋ฉ์์ง, ์์ฑ์ ๋ฑ๊ณผ ํจ๊ป ๋ธ๋์น ๋ฐ ๋จธ์ง ์ด๋ ฅ์ ๊ทธ๋ํ ํํ๋ก ์ถ๋ ฅ๋๋ฉฐ ๋ธ๋์น๋ ๋
ธ๋๋ก ํ์๋๊ณ , ์ปค๋ฐ์ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด Git ์ ์ฅ์์ ์ด๋ ฅ์ ์๊ฐ์ ์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค.
๋ง์ฝ ๋ ๋ฒ์ ์ ์ฐจ์ด๋ฅผ ์๊ณ ์ถ๋ค๋ฉด, ๋น๊ตํ ๋ ๊ฐ(A, B)์ ๋ธ๋์น ์ฌ์ด์ โ..โ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
A..B ํํ๋ก ์ฌ์ฉํ๊ฒ ๋๋ฉด, B ๋ธ๋์น์ ์กด์ฌํ๋ ์ปค๋ฐ ์ค์์ A์ ์กด์ฌํ์ง ์๋ ์ปค๋ฐ์ ์ฐพ์์ฃผ๋ฉฐ
B..A ํํ๋ก ์ฌ์ฉํ๊ฒ ๋๋ฉด, A ๋ธ๋์น์ ์กด์ฌํ๋ ์ปค๋ฐ ์ค์์ B์ ์กด์ฌํ์ง ์๋ ์ปค๋ฐ์ ์ฐพ์์ค๋๋ค.
์ถ๊ฐ๋ก, ์ฌ์ด์ ์ต์ p๋ฅผ ์ฐ๋ฉด ๋ฒ์ ๋ณ๋ก ์ด๋ค ์์ค ์ฝ๋ ์ฐจ์ด๊ฐ ์์๋์ง๋ฅผ ์ ์ ์์ต๋๋ค.
1-2) diff
์ด๋ฒ์๋ ๋ ๋ธ๋์น ์ฌ์ด์ ์๋ ํ์ผ ํน์ ๋๋ ํฐ๋ฆฌ ๊ฐ์ ๋ณ๊ฒฝ ๋ด์ฉ์ ํ์ ํด๋ณด๊ฒ ์ต๋๋ค.
Git์์ ํ์ผ์ ๋ณ๊ฒฝ ๋ด์ฉ์ ํ์ธํ ๋ ์ฌ์ฉํ๋ ๋ช ๋ น์ด๊ฐ diff์ ๋๋ค.
์์๋ฅผ ์ดํด๋ณด๊ธฐ ์ ์ ๊ธฐํธ์ ์๋ฏธ์ ๋ํด์ ๋ณด๋ฉด ---
๋ ์ด์ ๋ฒ์ ์ ํ์ผ์, +++
๋ ๋ณ๊ฒฝ๋ ๋ฒ์ ์ ํ์ผ์ ๋ํ๋ด๋ฉฐ, -
๋ ์ด์ ๋ฒ์ ์์ ์ญ์ ๋ ๋ด์ฉ, +
๋ ๋ณ๊ฒฝ๋ ๋ฒ์ ์์ ์ถ๊ฐ๋ ๋ด์ฉ์ ๋ํ๋
๋๋ค. ๋ํ @@
๊ธฐํธ๋ ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ ์์น๋ฅผ ๋ํ๋ด๋ฉฐ, -
์ +
๊ธฐํธ ์์ ์์นํ ์ซ์๋ ํด๋น ๋ด์ฉ์ ์์น ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค.
- A..B ํํ
diff์ ๊ฒฐ๊ณผ๋ฅผ ๋ถ์ํด๋ณด๋ฉด, a/f1.text
์ b/f1.text
ํ์ผ ์ฌ์ด์ ์ฐจ์ด๋ฅผ ๋น๊ตํ๊ณ ์๊ณ , ํ์ผ๊ฐ์ ์ธ๋ฑ์ค ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์์ต๋๋ค. --- a/f1.text
: ์๋ ํ์ผ์ ๋ฒ์ ์ , +++ b/f1.text
: ๋ณ๊ฒฝ๋ ํ์ผ์ ๋ฒ์ ์ ๋ํ๋
๋๋ค. @@
์ดํ์ ๋์ค๋ -1,3
์ ๋ณ๊ฒฝ ์ ํ์ผ์์ ์ฒซ๋ฒ์งธ ์ค์์๋ถํฐ ์ธ ์ค์ ์๋ฏธํ๊ณ +1,4
๋ ๋ณ๊ฒฝ ํ ํ์ผ์์ ์ฒซ๋ฒ์งธ ์ค์์๋ถํฐ ๋ค ์ค์ ์๋ฏธํฉ๋๋ค. -f
๋ ์๋ ํ์ผ์์ ์ญ์ ๋ ๋ด์ฉ์ ๋ณด์ฌ์ฃผ๊ณ +c,+d
๋ ๋ณ๊ฒฝ๋ ํ์ผ์์ ์ถ๊ฐ๋ ๋ด์ฉ์ ๋ณด์ฌ์ค๋๋ค.
์ฆ, f1.text
ํ์ผ์ 3๋ฒ์งธ ์ค์ ์๋ f
๋ฌธ์๊ฐ c
๋ก ๋ณ๊ฒฝ๋๊ณ , 4๋ฒ์งธ ์ค์ d
๋ฌธ์๊ฐ ์ถ๊ฐ๋ ๊ฒ์ ๋ํ๋ด๋ ๊ฒฐ๊ณผ๋ฅผ diff๋ฅผ ํตํด ํ์ธ ํ ์ ์์์ต๋๋ค.
- B..A ํํ
A..B ํํ์ ๋ง์ฐฌ๊ฐ์ง๋ก, ๋ ๋ธ๋์น ์ฌ์ด์ ์ฐจ์ด์ ์ ๋น๊ตํ์ง๋ง B..A ํํ๋ B์์ A๋ก ๊ฐ๋ ๋ณ๊ฒฝ ์ฌํญ๋ค์ ๋ณด์ฌ์ค๋๋ค. B ๋ธ๋์น ์
์ฅ์์ -c
์ -d
๋ ์ญ์ ๋ ๋ด์ฉ์ด๊ณ , +f
๋ ์ถ๊ฐ๋ ๋ด์ฉ์ด๋ผ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ ๋ฆฌํ๋ฉด, ์์ ์ค๋ช ๋๋ฆฐ git log A..B๋ ๋ ๋ธ๋์น ์ฌ์ด์ ์ฐจ์ด๋ฅผ ๋น๊ตํ์ฌ B ๋ธ๋์น์ ์กด์ฌํ๋ ์ปค๋ฐ๋ค์ ๋ณด์ฌ์ฃผ๋ ๋ฐ๋ฉด, git diff A..B๋ ๋ ๋ธ๋์น ์ฌ์ด์ ์๋ ํ์ผ ๋๋ ๋๋ ํฐ๋ฆฌ ๊ฐ์ ๋ณ๊ฒฝ ๋ด์ฉ์ ๋น๊ตํ์ฌ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ๋ณด์ฌ์ค๋ค๋ ์ ์ ํ์ธํ ์ ์์์ต๋๋ค.
2) HEAD ํ์ผ
์์์ ์ดํด๋ณธ git log์ ๊ฒฐ๊ณผ๋ฅผ ์์ธํ ์ดํด๋ณด๋ฉด HEAD๋ผ๋ ํ์๊ฐ ๊ณ์ ๋ณด์๋๋ฐ์. ๊ณผ์ฐ ์ด HEAD๊ฐ ๋ฌด์์ธ์ง ์์๋ณด๊ฒ ์ต๋๋ค.
HEAD ํ์ผ์ .git ๋๋ ํฐ๋ฆฌ๊ฐ ์์ฑ๋ ๋ ์๋์ผ๋ก ์์ฑ๋๋ ํ์ผ์ด๋ฉฐ, ์ด ํ์ผ์ ์ฒ์์๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ๋ ref: refs/heads/main
๋ ํ์ผ์ ๊ฐ๋ฆฌํค๊ณ ์์ต๋๋ค. ํ์ง๋ง ๊ฐ๋ฆฌํค๊ณ ์๋ ref: refs/heads/main
ํ์ผ์ ์ด๋์๋ ์กด์ฌํ์ง ์์์ต๋๋ค.
์, ์ด ์ํ์์ f1.text๋ฅผ ์์ฑ ํ add & commit(message: 1)์ ํด๋ณด๊ฒ ์ต๋๋ค.
๋๋์ด ์๊ธด ref: refs/heads/main
๋ ์ฒซ ๋ฒ์งธ ์ปค๋ฐ์ ์์ํ ์์ ๋ถํฐ ์์ฑ์ด ๋๋ ๊ฒ์ ํ์ธํ ์ ์์๊ณ , ๊ทธ ์์ ์ดํด๋ณด๋ commit ํด์๊ฐ์ ๊ฐ๋ฆฌํค๋ object์ ์ ๋ณด๊ฐ ๋ค์ด์๋ค๋ ๊ฒ์ ์ ์ ์์์ต๋๋ค.
ํ ๋ฒ ๋ ๋ณํ๋ฅผ ๊ด์ฐฐํ๊ธฐ ์ํด f1.text ๋ด์ฉ์ ์์ ํ add & commit(message: 2)์ ํด๋ณด๊ฒ ์ต๋๋ค.
ref: refs/heads/main
๋ด์ฉ์ด ๋ฐฉ๊ธ ์ปค๋ฐํ ๋ ๋ฒ์งธ commit ํด์๊ฐ์ ๊ฐ๋ฆฌํค๋ object Id๋ก ๋ณ๊ฒฝ๋ ๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค.
์ด๋ feature ๋ธ๋์น๋ฅผ ์์ฑํ๋ฉด .git ๋๋ ํฐ๋ฆฌ ๋ด๋ถ์ ๋ณํ๋ ์ด๋ป๊ฒ ๋ฐ๋๊น์?
2๊ฐ์ ํ์ผ์ด ๋ณํํ๋๋ฐ, ๊ทธ ์ค ref: refs/heads/feature
ํ์ผ์ด ์๊ฒผ๊ณ main๊ณผ ๋์ผํ๊ฒ ์ต์ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ ๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค.
์ด .git/refs/heads/branch์ด๋ฆ
ํ์ผ์ ํ์ฌ ์ฒดํฌ์์ํ ๋ธ๋์น์ ์ต์ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๊ณ ์๋ ํ์ผ๋ก, ๋ธ๋์น๋ฅผ ์ถ์ ํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ ์ค์ํ .git/refs/heads/feature
ํ์ผ์ ์ง์ฐ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
๋ชจ๋ ๋ธ๋์น๋ฅผ ๋ชฉ๋ก์ ๋ณด์ฌ์ฃผ๋ git branch๋ฅผ ์คํํ๋ฉด, feature ๋ธ๋์น๊ฐ ์ฌ๋ผ์ง ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๋ค์ ์ต์ ์ปค๋ฐ ๋ด์ฉ์ ๋ด์ .git/refs/heads/feature
๋ฅผ ์์ฑํ๊ฒ ๋๋ค๋ฉด? ๋ค์ feature ๋ธ๋์น๊ฐ ์์ฑ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ ์๊ฒ ๋ ๋๋ผ์ด ์ฌ์ค์ git์์ ๋ธ๋์น๋ ๊ต์ฅํ ์ค์ํ๊ณ ๊ฐ๋ ฅํ ์ผ์ ํ๊ณ ์์ง๋ง, ๋จ์ง .git/refs/heads/ ํ์์์ ์ผ๋ฐ ํ ์คํธ ํ์ผ๋ก ์กด์ฌํ๋ค๋ ์ ์ด์์ต๋๋ค.
์ญ์ ํ ์ง์ ํ์ผ์ ์์ฑํ์ฌ ๋ง๋ค์ด์ง feature๋ก checkout์ ํ๊ฒ ๋๋ฉด ๋ด๋ถ๋ ์ด๋ป๊ฒ ๋ณํ ๊น์? ์์ํ๋ ๋๋ก HEAD๊ฐ feature๋ฅผ ๊ฐ๋ฆฌํค๊ณ feature์ ์ต์ ์ปค๋ฐ์ ๋ด์ฉ์ ๋ด๊ณ ์์์ต๋๋ค.
์ ๋ฆฌํ๋ฉด, git log์ ํ์๋๋ HEAD๋ Git์์ ํ์ฌ ์ฒดํฌ์์ํ ๋ธ๋์น๋ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ ์ญํ ์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฐ๋ฆฌ๋ ํ์ฌ ์์ ์ค์ธ ๋ธ๋์น๋ ์ปค๋ฐ์ ์ถ์ ํ ์ ์๊ณ , Git ๋ช ๋ น์ด๋ฅผ ์คํํ ๋ HEAD๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ ์ ์งํํ ์ ์์ต๋๋ค.
3) merge VS rebase
๋ค์์ผ๋ก ์ดํด๋ณผ ๋ด์ฉ์ ๋ ๊ฐ์ ๋ค๋ฅธ ๋ธ๋์น๋ฅผ ํ๋๋ก ํฉ์น๋ ์์ ํ๋ ๊ณผ์ ์์ ์ฐ์ด๋ ๋ช ๋ น์ด merge์ rebase ์ ๋๋ค. ๋ ๋ช ๋ น์ด ๋ชจ๋ ์ฌ๋ฌ ์ฌ๋์ด ๋์์ ์์ ํ๊ณ ์์ ๋, ๊ฐ๊ฐ์ ์์ ๋ด์ฉ์ ํตํฉํ ๊ฒฝ์ฐ ์ฐ์ด๋ ์์ ํ๊ฒฝ๊ณผ ํ๋ฆ ๋ฑ ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ๋ฐฉ๋ฒ์ ์ ํํด์ผ ํฉ๋๋ค.
merge, rebase์ ๋์์ ๋ํด์ ๊ฐ๋จํ๊ฒ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
3-1) merge
merge๋ ๋ ๊ฐ์ ๋ค๋ฅธ ๋ธ๋์น๋ฅผ ํ๋์ ์๋ก์ด ์ปค๋ฐ์ผ๋ก ํฉ์น๋ ๋ฐฉ๋ฒ์ ๋๋ค.
-
๊ฐ ์ปค๋ฐ ์ด๋ ฅ์ ๊ฐ์ง main๊ณผ feature ๋ธ๋์น๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค.
-
feature์ main์ ๋ด์ฉ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด์ git checkout feature โ git merge main์ ์คํํ์์ต๋๋ค.
-
๊ทธ ๊ฒฐ๊ณผ 3-way ๊ธฐ๋ฒ์ ํตํด main์ ์ต์ ์ปค๋ฐ, feature์ ์ต์ ์ปค๋ฐ์ ๊ณตํต ์กฐ์์ผ๋ก ํ๋ ์๋ก์ด ์ปค๋ฐ(066b182)์ด ๋ง๋ค์ด์ก์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก, feature ๋ธ๋์น์์ 1๋ฒ๊ณผ 2๋ฒ ๋ถ๋ถ ๋ชจ๋๋ฅผ ๊ฐ์ง ํ๋์ ์ปค๋ฐ์ด ์์ฑ๋๋ฉด์ main ๋ธ๋์น์ ๋ณํฉํ ๊ฒ๊ณผ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ฒ ๋ฉ๋๋ค.
merge๋ ํ์คํ ๋ฆฌ๊ฐ ๋ณ๋ ฌ๋ก ๋์๊ฐ์ ๋ ๋ธ๋์น์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณํฉํ๊ณ ๋ณํฉ๋ ์ปค๋ฐ์ ์์ฑํ๊ณ , ์ด ๋ณํฉ๋ ์ปค๋ฐ์ ๊ฐ ๋ธ๋์น์ ๋ณ๊ฒฝ ์ฌํญ์ ํฌํจํ๊ณ ์์ด ํ์คํ ๋ฆฌ๋ฅผ ํ์ ํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ค์ง๋ง, ๋ ๋ธ๋์น์ ๊ณตํต ์กฐ์ ์ปค๋ฐ์ ๊ธฐ์ค์ผ๋ก ๋ณํฉ์ ์ํํ๊ธฐ ๋๋ฌธ์ ๋ ๋ธ๋์น์์ ๋์ผํ ํ์ผ์ ์์ ํ์ฌ ๋ฐ์ํ ์ถฉ๋์ ๊ฒฝ์ฐ ํด๊ฒฐํ๊ธฐ ์ฝ์ต๋๋ค.
3-2) rebase
rebase๋ ๋ค๋ฅธ ๋ธ๋์น์ ๋ณ๊ฒฝ ๋ด์ฉ์ ํ์ฌ ๋ธ๋์น๋ก ๊ฐ์ ธ์์ ๋ณ๊ฒฝ ๋ด์ฉ์ ์ ํ์ ์ผ๋ก ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ผ๋ก, ํ์ฌ ๋ธ๋์น์์ ๊ฐ์ ธ์จ ๋ณ๊ฒฝ ๋ด์ฉ์ด ๋ง์น ํ์ฌ ๋ธ๋์น์์ ์ผ์ด๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. rebase๋ ๋ธ๋์น๋ฅผ ์๋ก์ด ๊ธฐ์ค์ ์ผ๋ก ์ด๋์ํค๋ฏ๋ก, ๋ณ๊ฒฝ ์ด๋ ฅ์ด ๊น๋ํ๊ฒ ์ ์ง๋ฉ๋๋ค.
์ด๋ฆ์์ ๋ณผ ์ ์๋ฏ์ด, rebase์์ base ์๋ฏธ๋ ๋ ๊ฐ์ ๋ธ๋์น๊ฐ ๊ณตํต์ผ๋ก ๊ฐ์ง๊ณ ์๋ ์ปค๋ฐ์ ์๋ฏธํ๊ณ , rebase๋ฅผ ํ๋ค๋ ๊ฑด base๋ฅผ ๋ฐ๊พผ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์๋์ ๊ฐ์ ์ด๊ธฐ ์ํ์ ๋ง๋ ํ feature์ ์ ์ฅ์์ base์ ๋ณํ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ํ์ฌ base๋ master์ featrue์ ๊ณตํต ์กฐ์์ ์ปค๋ฐ์ธ b576179๊ฐ ๋ฉ๋๋ค.
rebase ์
rebase ํ
๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด feature๋ b576179๋ฅผ ์กฐ์(base)์ผ๋ก ํ๋ ๋ธ๋์น์๋๋ฐ rebase๋ฅผ ํ๊ณ ๋ ํ feature์ ์กฐ์์ master๊ฐ ์์นํ 1e05be4๋ฅผ ์กฐ์(rebase)์ผ๋ก ๋ณ๊ฒฝ๋์์์ ํ์ธํ ์ ์์์ต๋๋ค. ๊ทธ๋์ feature๋ rebase ์ ๊น์ง๋ master๊ฐ ์์ ํ 2๊ฐ์ ์ปค๋ฐ์ด ํฌํจ๋์ง ์์๋๋ฐ, rebase ํ M1,M2๊น์ง ๋ด์ฉ์ด ํฌํจ๋ ๋ธ๋์น๊ฐ ๋ ๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค.
์ด ์ํ์์ master๊ฐ feature ๋ธ๋์น์ ๋ณ๊ฒฝ์ฌํญ (R1,R2)๋ฅผ ๋ณํฉํ๊ณ ์ถ๋ค๋ฉด git checkout master ํ git merge feature ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ํํ๋ฉด ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋ฉ๋๋ค.
rebase๋ ํ์คํ ๋ฆฌ๋ฅผ ์ผ๋ ฌ๋ก ๋์ดํ๊ณ ์์๋๋ก ๋ค๋ฅธ ๋ธ๋์น์ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ฌ ๋ธ๋์น์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ค์ ๋ง๋ถ์ด๋ ๋ฐฉ์์ผ๋ก ๋ธ๋์น ๊ฐ์ ๋ณํฉ๋ ์ปค๋ฐ์ด ์์ฑ๋์ง ์์ ํ์คํ ๋ฆฌ๋ฅผ ๊นจ๋์ด ์ ์งํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ณ๊ฒฝ ์ฌํญ์ ์์๋๋ก ์ ์ฉํ๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ๋ธ๋์น ๊ฐ์ ๊ฐ์ ํ์ผ์ ์์ ํ ๊ฒฝ์ฐ ์ถฉ๋ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์ปค์ง๊ณ , ์ด ์ถฉ๋์ ํด๊ฒฐํ๋ ์์ ์ merge๋ณด๋ค ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์ฃผ์ํด์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ด๋ฅผ ํตํด merge์ rebase๋ ๋ชจ๋ ์ฌ๋ฌ ๊ฐ๋ฐ์๋ค์ด ๊ฐ์ ์ฝ๋ ๋ฒ ์ด์ค์์ ์์ ํ ๋ ์๋ก ๋ค๋ฅธ ๋ธ๋์น์ ์์ ๋ด์ฉ์ ํตํฉํ๋ ๋ฐฉ๋ฒ์ด์ง๋ง, ๋ ๋ช ๋ น์ด๊ฐ ์ํ๋๋ ๊ณผ์ ์ ์ฐจ์ด๊ฐ ์กด์ฌํ๋ ๊ฒ์ ์ ์ ์์์ต๋๋ค.
4) reset VS revert
๋ง์ง๋ง์ผ๋ก Git์ ๊ณผ๊ฑฐ ์ปค๋ฐ์ ๋ค๋ฃจ๋ ๋ช ๋ น์ด reset, revert๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
4-1) reset
reset์ HEAD๊ฐ ๊ฐ๋ฆฌํค๋ ๋ธ๋์น์ ๋ฒ์ ์ ๋ฐ๊พธ๋ฉด์ ์ปค๋ฐ ์ดํ์ ์์ ๋ด์ฉ์ด ์ทจ์๋ ํจ๊ณผ์ฒ๋ผ ๋ณด์ฌ์ฃผ๋ ๋ช ๋ น์ด์ ๋๋ค. ์ด ๋ช ๋ น์ด๋ ํ์คํ ๋ฆฌ์ ๊ธฐ๋ก๋์ง ์๊ธฐ ๋๋ฌธ์ ์๋ชป๋ ์ปค๋ฐ์ ์์ ํ๊ฑฐ๋ ํน์ ์ปค๋ฐ์ผ๋ก ๋๋์๊ฐ๊ณ ์ถ์ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
reset ๋ช ๋ น์ด๋ ๋๋์๊ฐ๊ณ ์ถ์ ์ปค๋ฐ์ id๋ฅผ ์ ๋ ฅํด์ผ ํ๊ณ , ์ด๋ ์ด๋ค ์ต์ (soft, mixed, hard)์ ์ ํํ๋์ง์ ๋ฐ๋ผ ์ทจ์๋๋ ๋์์ด ๋ฌ๋ผ์ง๋๋ค. (์ด์ ํฌ์คํธ์์ ์๊ธฐํ๋ working directory, index, repository์ ๊ฐ๋ ์ ๊ฐ์ ธ์ ์ค๋ช ํ๊ฒ ์ต๋๋ค)
์, โinitโ์ ๋ด์ฉ์ ์ง๋ f1.text ํ์ผ์ ์์ฑ ํ git add & commit ( message : 1 ) ํ ์ํ์์ ์์ ํ๊ณ reset ํ๋ฉด์ ์ต์ ์ ๋ฐ๋ผ working directory, index, repository์์ ๊ฐ๊ฐ f1.text ๋ด์ฉ์ด ์ด๋ป๊ฒ ๋ณํํ๋์ง ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
๋จผ์ , โrepositoryโ๋ก ๋ด์ฉ์ ์์ ํ f1.text ํ์ผ์ git add & commit ( message : 2 ) ํ๊ฒ ๋๋ฉด
working directory, index, repository์ f1.text์ ๋ด์ฉ์ ๋ชจ๋ โrepositoryโ์์ ํ์ธํ ์ ์์ต๋๋ค.
working directory โ repository
index โ repository
repository โ repository
๊ทธ ๋ค์ โindexโ๋ก ๋ด์ฉ์ ์์ ํ f1.text ํ์ผ์ git add๊น์ง ํ ์ํ์์ ์ดํด๋ณด๋ฉด f1.text ๋ด์ฉ์ ์๋์ ๊ฐ์ด ๋ณ๊ฒฝ๋ฉ๋๋ค.
๊ทธ ๋ค์ โworking directoryโ๋ก ๋ด์ฉ์ ์์ ํ f1.text ํ์ผ์ add, commit ํ์ง ์์ผ๋ฉด f1.text ๋ด์ฉ์ ์๋์ ๊ฐ์ด ๋ณ๊ฒฝ๋ฉ๋๋ค.
์ด ์ํ์์ ๊ฐ๊ฐ ์ต์ ์ ์ ์ฉํ์ฌ 7b7fโฆ74๋ก reset ํ์ ๋์ ๋ณํ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
-
soft ์ต์
๋จผ์ , soft ์ต์ ์ ์ฌ์ฉํ๊ฒ ์ต๋๋ค.
git reset --soft 7b7f9e441718f33183cbca20c8fcdf54792d5474
๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด, repository๋ ์ด๊ธฐํ๋์์ผ๋ working directory, index์ ๋ด์ฉ์๋ ๋ณํ๊ฐ ์์์ต๋๋ค.
-
working directory โ ๋ณํ์์
-
index โ ๋ณํ์์
-
repository โ init ์ผ๋ก ์ด๊ธฐํ ๋จ
-
-
mixed ์ต์
ORIG_HEAD๋ฅผ ์ด์ฉํ์ฌ ๋ค์ reset ํ๊ธฐ ์ ์ ์ํ๋ก ๋๋๋ฆฐ ํ mixed๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค. ( ORIG_HEAD๋ ์๋์์ ๋ณด์ถฉ ์ค๋ช ํ๊ฒ ์ต๋๋ค. )
git reset --soft ORIG_HEAD git reset --mixed 7b7f9e441718f33183cbca20c8fcdf54792d5474
์ด๋ฒ์๋, repository, index๋ ์ด๊ธฐํ๋์์ผ๋ working directory์ ๋ด์ฉ์๋ ๋ณํ๊ฐ ์์์ต๋๋ค.
-
working directory โ ๋ณํ์์
-
index โ init ์ผ๋ก ์ด๊ธฐํ ๋จ
-
repository โ init ์ผ๋ก ์ด๊ธฐํ ๋จ
-
-
hard ์ต์
ORIG_HEAD๋ฅผ ์ด์ฉํ์ฌ ๋ค์ reset ํ๊ธฐ ์ ์ ์ํ๋ก ๋๋๋ฆฐ ํ hard๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค.
git reset --mixed ORIG_HEAD git reset --hard 7b7f9e441718f33183cbca20c8fcdf54792d5474
์ด๋ฒ์๋, repository, index, working directory ์์ญ ๋ชจ๋ init์ผ๋ก ์ด๊ธฐํ๋์์์ ์ ์ ์์์ต๋๋ค.
-
working directory โ init ์ผ๋ก ์ด๊ธฐํ ๋จ
-
index โ init ์ผ๋ก ์ด๊ธฐํ ๋จ
-
repository โ init ์ผ๋ก ์ด๊ธฐํ ๋จ
-
์๋์ ์ ๋ฆฌํ ๊ฒ์ฒ๋ผ, ๊ฐ ์ต์ ์ ์ ํํ๋ ๊ฒ์ ๋ฐ๋ผ ์ทจ์๋๋ ๋์์ด ๋ค๋ฅด๋ค๋ ๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค.
- soft๋ repository๋ ์ด๊ธฐํ๋๋, working directory, index์ ๋ด์ฉ์ ๊ฑด๋ค์ง ์์ต๋๋ค.
- mixed๋ index, repository๋ ์ด๊ธฐํ๋๋ working directory์ ๋ด์ฉ์ ๊ฑด๋ค์ง ์์ต๋๋ค.
- hard๋ working directory, index, repository ๋ด์ฉ์ด ๋ชจ๋ ์ด๊ธฐํ๋ฉ๋๋ค.
์ด๋ฒ์ reset ๋ช ๋ น์ ์คํํ๋ฉด ์ด๋ค ์ผ์ด ์ผ์ด๋๋์ง ์ดํด๋ณด๊ณ , ์ด๋ฅผ ๋ฐํ์ผ๋ก ์ด์ ์ํ๋ก ๋ณต์ํ๋ ๋ฐฉ๋ฒ๊น์ง ์์๋ณด๊ฒ ์ต๋๋ค.
๋จผ์ 4๊ฐ์ commit์ ๊ฐ์ง main ๋ธ๋์น๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค.
์ ์ํ์์ reset โhard ์ต์ ์ ์ฌ์ฉํ์ฌ ์ปค๋ฐid๊ฐ 6631โฆ.d6e๋ก ๋์๊ฐ๊ฒ ๋๋ฉด ๋ด๋ถ์ ์ผ๋ก๋ ์ด๋ป๊ฒ ๋ณํ ๊น์?
ref: refs/heads/main
ํ์ผ์ ๋ด์ฉ์ด ์ทจ์ํ ์ปค๋ฐid๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค. ์ด๋ฅผ ํตํด reset์ ๋ด๋ถ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์ฒดํฌ์์ํ๊ณ ์๋ ๋ธ๋์น์ ์ต์ ์ปค๋ฐ์ ๋ฐ๊พธ๋ ํ์๋ง ํ๊ณ ์์๋ค๋ ๊ฒ์ ์ ์ ์์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ทจ์ํ ์ปค๋ฐ์ ์ง์์ง ๊ฑธ๊น์? ์๋๋๋ค. git์ ์ฌ๋งํด์๋ ์ด๋ ํ ์ ๋ณด๋ ์ง์ฐ์ง ์์ต๋๋ค.
์ด๋ฅผ ํ์ธํ๊ธฐ ์ํด ORIG_HEAD ํ์ผ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
./ORIG_HEAD์์ ์ฐ๋ฆฌ๊ฐ ์ญ์ ํ commit id๊ฐ ์กด์ฌํ๋ ๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค.
โgit reset โhard ORIG_HEADโ ๋ฅผ ํ๋ฉด reset ํ๊ธฐ ์ ์ ์ํ๋ก ์์ ๋ณต๊ตฌ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
ORIG_HEAD ํ์ผ์ ํ์ฌ ๋ธ๋์น์ ํค๋๊ฐ ๊ฐ๋ฆฌํค๊ณ ์๋ ์ปค๋ฐ์ ๊ธฐ๋กํด๋๊ณ , ๋ฆฌ์ ํ๊ธฐ ์ ์ ์ปค๋ฐ์ด ๋ฌด์์ธ๊ฐ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ด ์ด๋ฅผ ์ด์ฉํ์ฌ ๋ค์ reset ํ๊ธฐ ์ ์ผ๋ก ์์๋ณต๊ตฌ ํ ์ ์์ต๋๋ค. ์ด๋ ๋ณ๋์ ์ต์ ์ ์ง์ ํ์ง ์์ผ๋ฉด default๋ก mixed ์ต์ ์ด ์ ์ฉ๋๊ธฐ ๋๋ฌธ์ reset ํ ๋ ์ฌ์ฉํ ์ต์ ์ ์ง์ ํด์ฃผ์ด์ผ ํฉ๋๋ค.
์ด๋ ๊ฒ reset์ ์ต์ ์ ๋ฐ๋ผ ์ด๋ค ์์ญ์ ์ํฅ์ ๋ผ์น๋์ง์ ๋ด๋ถ์ ์ผ๋ก ์ด๋ค ์ผ์ด ์ผ์ด๋๋์ง, ๊ทธ๋ฆฌ๊ณ ์ค์๋ก reset์ ํ์ ๋ ์ด๋ป๊ฒ ์์ ๋ณต๊ตฌํ ์ ์๋์ง๋ฅผ ์ฐจ๋ก๋๋ก ์ดํด๋ณด์์ต๋๋ค.
4-2) revert
๊ทธ๋ฐ๋ฐ ๋ง์ฝ ์ค์ํ ๊ฒ๊น์ง ๊ธฐ๋ก์ผ๋ก ๋จ๊ฒจ๋๊ณ ์ถ์ ๋๋ ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ๋ฐ๋ก revert๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
revert๋ ์ปค๋ฐ ์ดํ์ ์์ ๋ด์ฉ์ ์ญ์ ํ์ง ์๊ณ ํ์ฌ ๋ธ๋์น์์ ์์ ํ๋ ๋ด์ฉ์ ๊ทธ๋๋ก ์ ์ง๋๋ฉด์ ํน์ ์ปค๋ฐ์ ์ทจ์ํ๋ ๋ช ๋ น์ด์ ๋๋ค. ์ด ๋ช ๋ น์ด๋ ์ปค๋ฐ ๋ก๊ทธ์ ์๋ก์ด ์ปค๋ฐ์ผ๋ก ๊ธฐ๋ก๋๊ธฐ ๋๋ฌธ์ ๊ณผ๊ฑฐ ์ปค๋ฐ์ ์์ ํ๋ ๊ฒ์ด ์๋๋ผ, ์ด์ ์ปค๋ฐ์ ๋ํ ์ทจ์ ์์ ์ ์ํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
reset์ ๋๋์๊ฐ๊ณ ์ถ์ ์ปค๋ฐ์ id์ ์ ๋ ฅํด์ผ ํ๋ค๋ฉด, revert๋ โ์ทจ์ํ๊ณ ์ถ์ ๋์โ์ ์ ๋ ฅํด์ผ ํฉ๋๋ค.
reset๊ณผ ๋์ผํ๊ฒ ์๋์ ๊ฐ์ ์ด๊ธฐ ์ํ์์ revert๋ฅผ ํ์ ๋์ ๋ณํ๋ฅผ ๊ด์ฐฐํด๋ณด๊ฒ ์ต๋๋ค.
ํ์ฌ ./refs/heads/main ํ์ผ์ 4๋ฒ์งธ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๊ณ ์์ต๋๋ค.
์ด๋ ๋ค ๋ฒ์งธ ์ปค๋ฐ์ ์ทจ์ํ๊ธฐ ์ํด โgit revert c8f866..83โ๋ฅผ ์ ๋ ฅํ๋ฉด โba2d4aโฆ7eโ๋ผ๋ ์๋ก์ด ์ปค๋ฐ์ด ์์ฑ๋ ๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค.
๋ด๋ถ๋ ์ด๋ป๊ฒ ๋ณํ ๊น์?
./refs/heads/main ํ์ผ์ ์๋ก ์์ฑ๋ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ ๊ฒ์ผ๋ก ๋ณ๊ฒฝ๋์์์ ์ ์ ์์ต๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก, ๋ ๋ช ๋ น์ด ๋ชจ๋ ๊ณผ๊ฑฐ๋ก ๋๋๋ฆฐ๋ค์ ๊ฐ๋ ์ด์ง๋ง, reset์ ํน์ ์ปค๋ฐ ์ดํ์ ๋ชจ๋ ์์ ๋ด์ฉ์ ์ญ์ ํ๋ ํจ๊ณผ๋ฅผ ํตํด ๊ณผ๊ฑฐ ์ปค๋ฐ์ผ๋ก ๋์๊ฐ๋ ๋ช ๋ น์ด์ด๊ณ , revert๋ ํ์ฌ ๋ธ๋์น์์ ์์ ํ๋ ๋ด์ฉ์ ์ ์งํ๋ฉด์ ์ด์ ์ปค๋ฐ์ ์ทจ์ํ๊ณ ์ด๋ฅผ ์ ์ปค๋ฐ์ผ๋ก ์ถ๊ฐ๋๋ ๋ช ๋ น์ด๋ผ๊ณ ์ ๋ฆฌํ ์ ์๊ฒ ๋ค์.
์ ์ค์ตํ ๋ด์ฉ์ ํ ๋๋ก reset, revert๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ์ ๋ฆฌํ ๋ชจ์ต์ ๋๋ค.
๊ธ์ ๋ง๋ฌด๋ฆฌํ๋ฉฐ
์ด๋ฒ ํฌ์คํธ์์๋ Git์ Branch๋ฅผ ์์์ผ๋ก log/diff์ ์ฐจ์ด, HEAD ํ์ผ, merge/rebase์ ์ฐจ์ด, reset/revert์ ์ฐจ์ด๋ฅผ ์์๋๋ก ์ดํด๋ณด์์ต๋๋ค. Git์ ๋ค์ํ ๋ช ๋ น์ด๋ฅผ ์ง์ ํ๊ณ ๋ค๋ฉด์ ๋ด๋ถ์ ์ผ๋ก ์ด๋ป๊ฒ ๋์ํ๋์ง๋ฅผ ์๊ฒ๋๋ ์ข์ ๊ฒฝํ์ ํ์ต๋๋ค. ๋ํ, Git์ ์ด์ฉํ ํ์ ์์ ์์๋ ๋ชฉ์ ๊ณผ ์ํฉ์ ๋ง๊ฒ ๊ฐ ๋ช ๋ น์ด๋ฅผ ์ ์ ํ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค.
์ด ๊ธ์ ๋ณด์๋ ๋ถ๋ค๋ ํ๋ฒ์ฏค Git์ ๋ด๋ถ๋ฅผ ๋ถ์ํด๋ณด๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค! ๋๊น์ง ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.