์์ง rebase์ ๋ํ ์ดํด๋๊ฐ ๋์ง์์
์ด ํฌ์คํ
์ ์ ๋ขฐ๋๋ ๋ฎ์ต๋๋ค
๊ณต๋ถ๋ฅผ ํ๋ฉฐ ์์ . ๋ณด์๋ ์์ ์ ๋๋ค
Git commit์ ์ค๋ก์ง ์๋ก ์๋ ๊ฒ๋ง ๊ฐ๋ฅํฉ๋๋ค
์ด ๊ตฌ์กฐ๋ ๋ง์น ์ฐ์์ ์ผ๋ก ์ฐ๊ฒฐ๋ chain์ ์ฐ์์ํต๋๋ค
๋จธ๋ฆฟ์์ chain์ ๋ ์ฌ๋ฆฌ๋ฉฐ ์์ํด๋ด
์๋ค
rebase
๋ ๋ง ๊ทธ๋๋ก base๋ฅผ ๋ฐ๊พธ๋ ๋ช ๋ น์ด์ ๋๋ค
๊ทธ๋ผ base๋ ๋ญ๊น์?
๋ฏธ๋ฆฌ ์ธ๊ธํ๋ฏ, commit์ ์ฐ์์ ์ธ ํํ๋ก ๋ง์น chain๊ณผ ๋น์ทํฉ๋๋ค
์ด chain์ ์ค๊ฐ์ ๋์ด์ ๋ท๋ถ๋ถ์ ๋ค๋ฅธ chain์ ๊ฑธ์ด ๋ฒ๋ฆฌ๋ฉด ์ด๋จ๊น์?
์ด๊ฒ์ด chain์ ์์์ , base๋ฅผ ๋ฐ๊พธ๋ ํ์. rebase
์
๋๋ค
์ด๋ค ๊ฒฝ์ฐ์ rebase
๋ฅผ ํ๊ฒ ๋๋์ง ์ดํด๋ด
์๋ค
๋ branch๋ฅผ ํฉ์น ๋ rebase๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค
๋์ , merge
์๋ ๊ตฌ์กฐ์ ์ธ ์ฐจ์ด๊ฐ ์กด์ฌํฉ๋๋ค
rebase๋ ๊ฒฐ๊ณผ์ ์ผ๋ก merge์ ๊ฐ์ ์ฝ๋๊ฒฐ๊ณผ๋ฅผ ๋ด์ง๋ง
branch๋ฅผ ๋์ด๋ด์ด ๋ค์ ๋ถํ๋ฒ๋ฆฝ๋๋ค
์ฅ์
ํ ์ค๋ก ๋ง๋ค์ด ๋ฒ๋ฆฌ๊ธฐ์ branch๊ฐ ๋ฌด์ํ ๋ง์ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ Git history tree๋ฅผ ์ข ๋ ๊น๋ํ๊ฒ ์ ๋ฆฌํ ์ ์์ต๋๋ค
๊ทธ๋ ๋ค๊ณ branch๊ฐ ํก์๋์ด ์กด์ฌ ์์ฒด๊ฐ ์ฌ๋ผ์ง๋๊ฑด ์๋๋๋ค
Git history์์ ๋ณด์ด์ง ์์ง๋ง ์ฌ์ ํ checkout์ ํตํด ๋ถํ์ branch๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค
๋ ๋ค๋ฅธ ์ฐจ์ด์ ์ด ์์ต๋๋ค
๋ถํ์ branch๋ก checkout ํ์ ๋, ์ฝ๋๊ฐ ์๋ก ๋ค๋ฅผ ์ ์์ต๋๋ค
๊ทน๊ตฌ ์ง์ํด์ผ ํ๋ ์ผ์ด์ง๋ง, ํ๋ฌ๊ฐ commit์ ์์ ํ๊ณ ์ถ์ ๋๊ฐ ์์ต๋๋ค
ex) commit ๋ฉ์์ง์ ์คํ๊ฐ ์์
๊ฐ์ฅ ์ต๊ทผ commit์ git commit --amend
๋ก ๊ฐ๋จํ๊ฒ ๋ณ๊ฒฝํ ์ ์์ง๋ง
๊ณผ๊ฑฐ์ commit์ ์ ํ ๊ทธ๋ ์ง ์์ต๋๋ค
rebase
๋ฅผ ์ด์ฉํด ๋ฐ๊พธ๊ณ ์ถ์ commit์ ๊ธฐ์ค์ผ๋ก ๋ท๋จ chain์ ํต์งธ๋ก ๋ผ์ด๋ด๋ฒ๋ฆฌ๊ณ
์๋ก์ด commit chain์ ๋ง๋ค์ด ๋ถํ์ผ ํฉ๋๋ค
git rebase -i <commitํด์>
1) ์ ๋ ฅํ commit๋ถํฐ ์ต์ commit๊น์ง ๋ณต์ฌํ chain์ ๋ง๋ค๊ณ ์ํ๋ ์์ ์ ์งํํฉ๋๋ค
2) ๊ธฐ์กด chain์ ํ๊ธฐํ๊ณ ์๋ก๋ง๋ chain์ผ๋ก ๊ต์ฒดํฉ๋๋ค
์ฐธ๊ณ ๋ก, -i๋ interactive์ ์ฝ์์ด๋ค
git rebase -i <commitํด์>
๋ฅผ ์
๋ ฅํ๋ฉด commit ๋ฉ์์ง ์์ (reword)๋ฟ๋ง ์๋๋ผ ๋ค์ํ ๋์์ด ๊ฐ๋ฅํฉ๋๋ค
์ถฉ๋์ด ๋ฐ์ํ๋ค๋์ง ๋ฑ์ ๊ฒฝ์ฐ์ rebase๊ฐ ์ค๊ฐ์ ์ ์ง๋๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ
์์ธ์ ํด๊ฒฐํ๊ณ git rebase --continue
๋ฅผ ํตํด ์ฌ๊ฐํ ์ ์๋ค