์ค๋ต ๊น ๐ช - ์ค๊ธํธ #3: ๊น๋ํ ํ์คํ ๋ฆฌ๋ฅผ ์ํ Rebase ์ฌ์ฉํ๊ธฐ
by its_TIMI๐ Rebase๋?
Rebase๋ ํ ๋ธ๋์น์ ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ๋ค๋ฅธ ๋ธ๋์น ์๋ก ๋ค์ ์ฌ๋ฐฐ์นํ๋ ์์ ์ด๋ค.
์ฝ๊ฒ ๋งํด, ๋ด๊ฐ ์์ ํ ์ปค๋ฐ์ ์ต์ ์ํ๋ก ๊น๋ํ๊ฒ ์ ๋ ฌํด ์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค.
์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ ์ํฉ์ ์๊ฐํด ๋ณด์:
• main ๋ธ๋์น์ ์๋ก์ด ์ปค๋ฐ์ด ์ถ๊ฐ๋ ์ํฉ:
main: A --- B --- C
feature: X --- Y
• feature ๋ธ๋์น๋ฅผ Rebaseํ๋ฉด:
main: A --- B --- C
X --- Y
Rebase๋ ๋ณํฉ ์ปค๋ฐ ์์ด ๋ธ๋์น์ ํ์คํ ๋ฆฌ๋ฅผ ๊น๋ํ๊ฒ ์ง์ ์ผ๋ก ๋ง๋ค์ด์ค๋ค.
๐ Rebase๊ฐ ํ์ํ ์ํฉ
1. ๋ธ๋์น๊ฐ ์ค๋๋ ์ํ์ผ ๋
main ๋ธ๋์น์ ์๋ก์ด ๋ณ๊ฒฝ ์ฌํญ์ด ์๊ฒผ์ ๋, ์ด๋ฅผ merge๋ก ๊ฐ์ ธ์ค๋ ๋์ Rebase๋ฅผ ์ฌ์ฉํ๋ฉด ํ์คํ ๋ฆฌ๋ฅผ ๊น๋ํ๊ฒ ์ ์งํ ์ ์๋ค.
2. ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ์ ๋ฆฌํ๊ณ ์ถ์ ๋
์ค๊ฐ์ค๊ฐ ํ ์คํธ์ฉ ์ปค๋ฐ์ด๋ ๋ถํ์ํ ์ปค๋ฐ์ ํ๋๋ก ํฉ์น๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ Rebase๋ฅผ ํ์ฉํ ์ ์๋ค.
๐ Rebase ์ฌ์ฉ ๋ฐฉ๋ฒ
1. ์ต์ ์ํ๋ก ์ ๋ฆฌํ๊ธฐ
์์ ์ค์ธ ๋ธ๋์น(feature)๋ฅผ ์ต์ ์ํ๋ก ์ ๋ฐ์ดํธํ๋ ค๋ฉด:
git checkout feature
git rebase main
์ด ๋ช ๋ น์ด๋ main ๋ธ๋์น์ ์ต์ ์ํ๋ฅผ ๊ธฐ์ค์ผ๋ก feature ๋ธ๋์น์ ์ปค๋ฐ์ ์ฌ๋ฐฐ์นํ๋ค.
2. ์ถฉ๋ ํด๊ฒฐํ๊ธฐ
Rebase ์ค ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ๋ค์ ๋ช ๋ น์ด๋ก ์ถฉ๋์ ํด๊ฒฐํ๋ค:
git add ์ถฉ๋ํด๊ฒฐ๋ํ์ผ
git rebase --continue
๋ชจ๋ ์ถฉ๋์ด ํด๊ฒฐ๋ ๋๊น์ง ๋ฐ๋ณตํ๋ฉด ๋๋ค.
3. Rebase๋ฅผ ์ทจ์ํ๊ณ ์ถ๋ค๋ฉด
Rebase ์ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์๋ ์ํ๋ก ๋์๊ฐ๊ณ ์ถ๋ค๋ฉด:
git rebase --abort
์ด ๋ช ๋ น์ด๋ก Rebase ์ด์ ์ํ๋ก ๋ณต๊ตฌํ ์ ์๋ค.
๐ ์๋ Rebase ์ค์
git pull ์ ๋งค๋ฒ Rebase๋ฅผ ์๋์ผ๋ก ์คํํ๋ ๊ฒ์ด ๋ฒ๊ฑฐ๋กญ๋ค๋ฉด, ์๋ ์ค์ ์ ํตํด ์๋ Rebase๋ฅผ ์ ์ฉํ ์ ์๋ค:
git config --global pull.rebase true
git config --global rebase.autoStash true
• pull.rebase true: git pull ์คํ ์ ์๋์ผ๋ก Rebase๋ฅผ ์ํ.
• rebase.autoStash true: ์์ ์ค์ธ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋๋ผ๋ Rebase ์ ์ ์๋์ผ๋ก ์์ ์ ์ฅ(stash) ํ ๋ค์ ์ ์ฉ.
๐ Rebase์ Merge์ ์ฐจ์ด์
• Rebase: ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ๊น๋ํ๊ฒ ์ ๋ฆฌํ๋ฉฐ, ๋ณํฉ ์ปค๋ฐ์ ๋จ๊ธฐ์ง ์๋๋ค.
• Merge: ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ์ ์งํ๋ฉฐ, ๋ณํฉ ์ปค๋ฐ์ด ์ถ๊ฐ๋๋ค.
์์: Rebase vs Merge
• Rebase ๊ฒฐ๊ณผ:
A --- B --- C --- X --- Y
• Merge ๊ฒฐ๊ณผ:
A --- B --- C
\ \
X --- Y --- M (merge commit)
๐ Rebase์ ์ฅ์
• ํ์ ์ ์ปค๋ฐ ํ์คํ ๋ฆฌ๊ฐ ๊น๋ํด์ ธ ๋ฆฌ๋ทฐ์ ๋๋ฒ๊น ์ด ์ฌ์์ง๋ค.
• ๋ณํฉ ์ปค๋ฐ ์์ด ๋ธ๋์น๋ฅผ ์ง์ ์ผ๋ก ์ ๋ฆฌํด ํ์คํ ๋ฆฌ์ ๊ฐ๋ ์ฑ์ ๋์ผ ์ ์๋ค.
Rebase๋ ๊น ํ์คํ ๋ฆฌ๋ฅผ ์ ๋ฆฌํ๊ณ , ํ์ ๊ณผ์ ์์ ๋ฐ์ํ๋ ํผ๋์ ์ค์ด๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ๋ค. ์ด๋ฒ ํ์ด Git ์ฌ์ฉ ๊ฒฝํ์ ๋ ํธ๋ฆฌํ๊ฒ ๋ง๋ค์ด ์ฃผ์๊ธธ ๋ฐ๋๋ค. ๋ค์์๋ ์ ์ตํ ๊น ํ์ผ๋ก ์ฐพ์์ค๊ฒ ๋ค.
'์ค๋ต ๊น๐ช > ์ค๊ธํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ธ๋ก๊ทธ์ ์ ๋ณด
Dev_TIMI
its_TIMI