git rebase --onto
- aliases
- No value
- tags
- No value
- description
- No value
- links
- 0290 Git ๐ชพ
- status
- ai response
- project
- false
- area
- false
- resource
- false
- title
- git rebase --onto
- created
- 2025-09-16T21:44:38
- updated
- 2025-09-16T21:45:16
Written by Chat GPT 5
Git Rebase --onto ์๋ฒฝ ๊ฐ์ด๋
Rebase --onto๋ ๋ฌด์์ธ๊ฐ
git rebase --onto๋ ํน์ ๊ตฌ๊ฐ์ ์ปค๋ฐ๋ง ๋ผ์ด๋ด์ด ์๋ก์ด ๋ฒ ์ด์ค ์์ ์ฌ๋ฐฐ์นํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์
๋๋ค. ๋จ์ git rebase์ ๋ฌ๋ฆฌ, โ์ด๋๊น์ง๋ฅผ ์๋ผ๋ผ์งโ์ โ์ด๋ ์์ ๋ถ์ผ์งโ๋ฅผ ๋ชจ๋ ๋ช
์ํ ์ ์์ต๋๋ค.
๋ช ๋ น์ด ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
git rebase --onto <NEWBASE> <UPSTREAM> [<BRANCH>]
<UPSTREAM>..[<BRANCH>]๋ฒ์์ ํด๋นํ๋ ์ปค๋ฐ๋ค์ ์๋ผ๋ ๋๋ค.- ๊ทธ ์ปค๋ฐ๋ค์
<NEWBASE>์์ ๋ค์ ์ ์ฉ(cherry-pick)ํฉ๋๋ค. <BRANCH>๋ฅผ ์๋ตํ๋ฉด ํ์ฌ ์ฒดํฌ์์๋ ๋ธ๋์น๊ฐ ๋์์ ๋๋ค.
์ง๊ด์ ์ดํด
๋จธ๋ฆฟ์์ ๊ทธ๋ฆฌ๋ฉด ์ด๋ ๊ฒ ๋ฉ๋๋ค.
์ ์ํ:
U0โโU1โโU2 (origin/dev)
\
AโโBโโC (feature)
์ํ๋ ์ํ:
M0โโM1 (origin/main)
\
A'โโB'โโC' (feature rebased)
์ฆ, origin/dev..feature์ ์ํ๋ A, B, C๋ง ๊ณจ๋ผ origin/main ์๋ก ์ฎ๊ธฐ๋ ๊ฒ์
๋๋ค.
์ค๋ฌด ์๋๋ฆฌ์ค: dev ๋จธ์ง๊ฐ ์์ธ feature๋ฅผ main์ผ๋ก ๋ณด๋ด์ผ ํ ๋
์์ฃผ ์๋ ์ผ์ด์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- feature๋ฅผ dev์์ ๋ถ๊ธฐํ์
- dev๊ฐ main๋ณด๋ค ๋จผ์ ๊ฐฑ์ ๋จ
- feature์ dev๋ฅผ ๋จธ์งํ๋๋, feature โ main PR์ dev์ ์ปค๋ฐ๊น์ง ์์ฌ๋ฒ๋ฆผ
์ด ๊ฒฝ์ฐ ํด๊ฒฐ์ฑ ์:
git fetch --all
git switch feature
git rebase --onto origin/main origin/dev feature
git push --force-with-lease
์ด์ feature๋ main์ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ , feature ๊ณ ์ ์ปค๋ฐ๋ง ๋จ์ต๋๋ค.
ํ์ฉ ํจํด ๋ชจ์
๋ธ๋์น ๋ฒ ์ด์ค ๊ฐ์ํ๊ธฐ
git rebase --onto origin/main origin/dev topic
topic์ dev์์ ํ์ํ๋๋ฐ main์ผ๋ก ํ๊ฒ์ ๋ฐ๊พธ๊ณ ์ถ์ ๋.
์ค๊ฐ ๊ตฌ๊ฐ ์ญ์
git rebase --onto B D branch
๋ธ๋์น์ C, D๋ฅผ ๋นผ๊ณ E, F๋ง ์ด์ด ๋ถ์ด๋ ํจ๊ณผ.
๋ง์ง๋ง N๊ฐ ์ปค๋ฐ๋ง ์ฎ๊ธฐ๊ธฐ
git rebase --onto newbase HEAD~N
๊ฐ์ฅ ์ต๊ทผ N๊ฐ๋ง ์๋ก์ด ๋ฒ ์ด์ค๋ก ์ฎ๊น.
feature ์ ์ฉ ์ปค๋ฐ๋ง ์ ์ง
git rebase --onto origin/main origin/dev feature
dev์ ๊ฒน์น๋ ๋ถ๋ถ์ ๋ฒ๋ฆฌ๊ณ feature๋ง main ์์ ์ฌ๋ฆผ.
์์ ํ๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
-
๋ฐฑ์ ๋ธ๋์น ์์ฑ
git branch backup/feature -
๋ฆฌ๋ฒ ์ด์ค ์ ์ํ ํ์ธ
git log --oneline --graph --decorate --all -
๋ฆฌ๋ฒ ์ด์ค ํ ๊ฒ์ฆ
git range-diff origin/dev..feature@{1} origin/main..feature git diff origin/main...feature -
๋ฌธ์ ์ ๋ณต์
git reflog git reset --hard backup/feature
์ถฉ๋ ์ฒ๋ฆฌ ์๋ น
- ์ถฉ๋ ๋ฐ์ โ ์์ โ
git add <file>โgit rebase --continue - ํ์ฌ ์ปค๋ฐ ์คํต โ
git rebase --skip - ์ ์ฒด ์ค๋จ โ
git rebase --abort
์ถฉ๋์ด ๋ง๋ค๋ฉด cherry-pick ์ ๋ต์ผ๋ก ๋๋์ด ์ฒ๋ฆฌํ๋ ๊ฒ๋ ์ข์ต๋๋ค.
merge์์ ์ฐจ์ด
- merge: ๋ ๋ธ๋์น๋ฅผ ํฉ์ณ์ ์ merge ์ปค๋ฐ ์์ฑ โ ํ์คํ ๋ฆฌ ๋ณต์ก, ๋ถํ์ํ ์ปค๋ฐ ํฌํจ๋จ
- rebase --onto: ํน์ ์ปค๋ฐ๋ง ์ ํ์ ์ผ๋ก ์ ๋ฒ ์ด์ค์ ์ฌ๋ฐฐ์น โ ์ ํ์ ์ด๊ณ ๊น๋ํ ํ์คํ ๋ฆฌ
๋ธ๋์นญ ์ ๋ต์์์ ๊ตํ
- ์ต์ข ํ๊ฒ์ด main์ด๋ฉด feature๋ main์์ ๋ถ๊ธฐํด์ผ ํฉ๋๋ค.
- dev๋ฅผ ์์ง ๋ง๊ณ , ํ์ ์
git rebase origin/main์ผ๋ก ์ต์ ํํฉ๋๋ค. - ๋ง์ฝ dev๋ฅผ ํฉ์ณ๋ฒ๋ ธ๋ค๋ฉด
git rebase --onto origin/main origin/dev feature๋ก ์ ๋ฆฌํ๋ ์ต๊ด์ ๋ค์ด์ธ์.