๋ฆฌ๋ฒ ์ด์ค(Rebase)
๐ ๋ฆฌ๋ฒ ์ด์ค(Rebase)
๋ฆฌ๋ฒ ์ด์ค๋ ํ์๋ ๋ธ๋์น์ ๊ธฐ์ค์ด ๋๋ ๋ฒ ์ด์ค ์ปค๋ฐ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋๋ค.
์ด๋ฐ ๋ฐฉ๋ฒ์ผ๋ก ๋ธ๋์น๋ฅผ ํฉ์น ์ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋จธ์ง์ ์ฐจ์ด์ ์ด ๋ญ๊น์?
merge vs rebase
์ฐ์ rebase์ merge์ ๊ณตํต์ ์ ๋ธ๋์น๋ฅผ ํฉ์น๋ค๋ ๊ฒ์ ๋๋ค.
์ฐจ์ด์ ์ rebase๋ฅผ ํ๋ ๊ฒฝ์ฐ๋ merge๋ณด๋ค ๊นจ๋ํ commit history๋ฅผ ๋ง๋ค ์ ์๋ค๋ ์ ์ ๋๋ค.
๊ทธ๋ฆผ์ฒ๋ผ ๋จธ์ง๋ ์๋ก์ด ์ปค๋ฐ์ ์์ฑํด์ ํ์๋ ๋ธ๋์น์ ์ ์ฉ๋์ง๋ง,
๋ฆฌ๋ฒ ์ด์ค๋ ๋ฒ ์ด์ค ์ปค๋ฐ์ ์ฌ์ค์ ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ง์น ์ฒ์๋ถํฐ ์ปค๋ฐ๋ ๊ฒ์ฒ๋ผ ์ ํ ๋ธ๋์น ํํ๋ฅผ ๋๊ฒ ๋ฉ๋๋ค.
๐ ์ฃผ์ํ ์ !
๋ฆฌ๋ฒ ์ด์ค๋ฅผ ํ๋ ๊ฒฝ์ฐ Base๊ฐ ๋ฐ๋ ์ปค๋ฐ๋ค์ ๋ณต์ฌ๋์ด ์๋ก ๋ง๋ค์ด์ง๋๋ฐ, ์ด ๊ณผ์ ์์ commit Id๊ฐ ๋ณ๊ฒฝ๋ฉ๋๋ค.
์ด๋ ๋ค๋ฅธ ๊ฐ๋ฐ์์ ํจ๊ป ํ์๋ ๋ธ๋์น์์ ์์ ์ ํ ๊ฒฝ์ฐ, ๋ฆฌ๋ฒ ์ด์ค๋ฅผ ํ๋ฉด merge conflict๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์๋ฒ์ ์ ๋ก๋๋ ํ์คํ ๋ฆฌ๋ ์ ๋ ๋ฆฌ๋ฒ ์ด์คํ๋ฉด ์๋ฉ๋๋ค
๐ ์์
-
git checkout (ํ์๋ ๋ธ๋์น)
๋ฅผ ์ด์ฉํด ํ์๋ ๋ธ๋์น๋ก ์ด๋ํฉ๋๋ค. -
git rebase master
๋ฅผ ์ ๋ ฅํด master ๋ธ๋์น์ ์ต์ ๋ฒ์ ์ผ๋ก ํฌ์ธํฐ๋ฅผ ์ด๋์ํต๋๋ค. -
git merge (ํ์๋ ๋ธ๋์น)
๋ฅผ ์ด์ฉํ๋ฉด merge๊ฐ ๊ฐ๋ฅํ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. -
์ดํ
git branch -d (๋ธ๋์น๋ช )
์ ์ ๋ ฅํด ์ธ๋ชจ ์์ด์ง ๋ธ๋์น๋ฅผ ์ญ์ ํด ๊น๋ํ๊ฒ ์ ๋ฆฌํด ์ค๋๋ค.
๐ rebase โonto
ํ์๋ ๋ธ๋์น์์ ๋ค์ ํ์๋ ๋ธ๋์น์ ํฌ์ธํฐ๋ฅผ master ๋ธ๋์น์ ์ฎ๊ฒจ์ฃผ๋ ๊ฒ์ ๋ปํฉ๋๋ค.
์ด๋ rebase --onto
์ต์
์ ์ฌ์ฉํฉ๋๋ค.
์์ ๊ฐ์ด ํฌ์ธํฐ๋ฅผ ์ฎ๊ฒจ ์ค ํ, merge๋ฅผ ํ๋ฉด ์ฑ๊ณต์ ์ผ๋ก merge๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ฐธ๊ณ
- ๋๋ฆผ์ฝ๋ฉ
๐ฌ ์ต์ ๋๊ธ