๐ rebase
git rebase๋ ํ ๋ธ๋์น์ ์ปค๋ฐ๋ค์ ๋ค๋ฅธ ๋ธ๋์น์ ์ต์ ์ปค๋ฐ ์์ โ์ฌ๋ฐฐ์นโํ์ฌ ์ ํ์ ์ธ ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ๋ง๋๋ ๋ช
๋ น- ์ฆ, ์ด๋ค ๋ธ๋์น์ ๋ณ๊ฒฝ ์ด๋ ฅ์ ๋ค๋ฅธ ๋ธ๋์น์ ๋ณ๊ฒฝ ์ด๋ ฅ ๋ค์ ๋ถ์ด๋ ๊ฒ
๐ rebase ์ฃผ์ ๋ชฉ์
- ํ์คํ ๋ฆฌ ๊น๋ํ๊ฒ ์ ์ง
- ๋ณต์กํ ๋ณํฉ ์ปค๋ฐ ์์ด ์ ํ์ ์ธ ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ๋ง๋ค์ด์, ํ๋ก์ ํธ์ ์ด๋ ฅ์ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ ๋ค.
- ์์
๋ธ๋์น ์ต์ ํ
- ๊ฐ๋ฐ ์ค์ธ ๊ธฐ๋ฅ ๋ธ๋์น๋ฅผ
main ๋ธ๋์น์ ์ต์ ๋ด์ฉ์ผ๋ก ์
๋ฐ์ดํธํ์ฌ ์ถฉ๋์ ๋ฏธ๋ฆฌ ํด๊ฒฐํ๊ณ ๊น๋ํ๊ฒ ๋ณํฉํ ์ ์๋๋ก ์ค๋นํ๋ค.
๐ rebase ์๋ ๋ฐฉ์
git rebase <๋์ ๋ธ๋์น> ๋ฅผ ์คํํ๋ฉด, ํ์ฌ ๋ธ๋์น์์ ๋์ ๋ธ๋์น์์ ๊ณตํต ์กฐ์ ์ปค๋ฐ ์ดํ์ ๋ชจ๋ ์ปค๋ฐ๋ค์ ์์๋ก ๋ถ๋ฆฌํ๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ฌ ๋ธ๋์น์ ์์์ ์ ๋์ ๋ธ๋์น์ ์ต์ ์ปค๋ฐ์ผ๋ก ์ด๋์ํจ ํ, ๋ถ๋ฆฌํ๋ ์ปค๋ฐ๋ค์ ์์๋๋ก ๋ค์ ์ ์ฉํ๋ค. ์ด ๊ณผ์ ์์ ๊ฐ ์ปค๋ฐ์ ํด์(SHA-1)๊ฐ ๋ณ๊ฒฝ๋๋ค.
์์
1
2
3
| --- A --- B --- C (main)
\
D --- E (feature)
|
feature ๋ธ๋์น์์ main ๋ธ๋์น๋ก rebase๋ฅผ ์ํํ๋ฉด (git switch feature ํ git rebase main)
D, E ์ปค๋ฐ์ ์์๋ก ๋ถ๋ฆฌfeature ๋ธ๋์น์ ์์์ ์ C ์ปค๋ฐ์ผ๋ก ์ด๋D์ E ์ปค๋ฐ์ C ์ปค๋ฐ ์์ ๋ค์ ์ ์ฉํ์ฌ ์๋ก์ด ์ปค๋ฐ D+, E+๋ฅผ ์์ฑ
๊ฒฐ๊ณผ
1
| --- A --- B --- C --- D+ --- E+ (main, feature)
|
์ฅ์
- ์ ํ์ ์ธ ์ปค๋ฐ ํ์คํ ๋ฆฌ
- ํ์คํ ๋ฆฌ ์ ๋ฆฌ
interactive rebase (git rebase -i)๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๊ฐ์ ์์ ์ปค๋ฐ์ ํ๋๋ก ํฉ์น๊ฑฐ๋, ์ปค๋ฐ ๋ฉ์ธ์ง๋ฅผ ์์ ํ๊ฑฐ๋, ์ปค๋ฐ ์์๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฑ ํ์คํ ๋ฆฌ๋ฅผ ์ธ๋ฐํ๊ฒ ์ ๋ฆฌํ ์ ์๋ค
๋จ์
- ๊ธฐ์กด ์ปค๋ฐ์ ํด์๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ ๊ณต์ ๋(push๋) ๋ธ๋์น์์๋ ์ ๋๋ก ์ฌ์ฉํด์๋ ์๋๋ค. ๋ค๋ฅธ ์ฌ๋์ ์์
๊ณผ ์ถฉ๋์ ์ผ์ผํค๊ฑฐ๋ ํ์คํ ๋ฆฌ๋ฅผ ํผ๋์ค๋ฝ๊ฒ ๋ง๋ค ์ ์๋ค.
- ๋ณต์ก์ฑ
- ์ถฉ๋ ๋ฐ์ ์
merge ๋ณด๋ค ํด๊ฒฐ ๊ณผ์ ์ด ์กฐ๊ธ ๋ ๋ณต์กํ ์ ์๋ค
๐ cherry-pick
git cherry-pick <์ปค๋ฐ ํด์> ๋ฅผ ์คํํ๋ฉด, ์ง์ ๋ ์ปค๋ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ฌ ๋ธ๋์น์ ์๋ก์ด ์ปค๋ฐ์ผ๋ก ์์ฑํ์ฌ ์ ์ฉํ๋ค.- ์๋ณธ ์ปค๋ฐ์ ํด์๋ ์ ์ง๋์ง ์๊ณ ์๋ก์ด ์ปค๋ฐ์ด ์์ฑ๋๋ค.
์์
1
2
3
| --- A --- B --- C (main)
\
D --- E --- F (feature)
|
main ๋ธ๋์น์์ feature ๋ธ๋์น์ E ์ปค๋ฐ๋ง cherry-pick ํ๋ ค๋ฉด (git switch main ํ git cherry-pick E_COMMIT_HASH)
๊ฒฐ๊ณผ
1
2
3
| --- A --- B --- C --- E+ (main)
\
D --- E --- F (feature)
|
- ์ฌ๊ธฐ์
E_COMMIT_HASH๋ E ์ปค๋ฐ์ ์ค์ ํด์ ๊ฐ์ด๋ค. E+ ๋ E ์ปค๋ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ด๊ณ ์๋ main ๋ธ๋์น์ ์๋ก ์์ฑ๋ ์ปค๋ฐ
์ฅ์
- ์ ํ์ ์ ์ฉ
- ํ์ํ ์ปค๋ฐ๋ง ์ ํํ ์ ํํ์ฌ ๊ฐ์ ธ์ฌ ์ ์๋ค.
- ์์ ์ฑ
- ๊ธฐ์กด ํ์คํ ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ , ์๋ก์ด ์ปค๋ฐ์ ์์ฑํ์ฌ ์ ์ฉํ๋ฏ๋ก ์ด๋ฏธ ๊ณต์ ๋ ๋ธ๋์น์์๋ ์๋์ ์ผ๋ก ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
๋จ์
- ํ์คํ ๋ฆฌ ์ค๋ณต
- ๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ฌ๋ฌ ๋ธ๋์น์ ์๋ก ๋ค๋ฅธ ์ปค๋ฐ์ผ๋ก ์กด์ฌํ ์ ์์ด ํ์คํ ๋ฆฌ๊ฐ ๋ค์ ์ง์ ๋ถํด์ง ์ ์๋ค.
- ์ค์ฉ ์ ๋ณต์ก์ฑ
- ๋๋ฌด ์์ฃผ ์ฌ์ฉํ๋ฉด ํ์คํ ๋ฆฌ๊ฐ ๋ณต์กํด์ง๊ณ , ๋์ค์ ๋ณํฉ ์ ์ถฉ๋ ํด๊ฒฐ์ด ์ด๋ ค์์ง ์ ์๋ค.