git rebase --onto

aliases
No value
tags
No value
description
No value
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>]

์ง๊ด€์  ์ดํ•ด

๋จธ๋ฆฟ์†์— ๊ทธ๋ฆฌ๋ฉด ์ด๋ ‡๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ „ ์ƒํƒœ:
      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์œผ๋กœ ๋ณด๋‚ด์•ผ ํ•  ๋•Œ

์ž์ฃผ ์žˆ๋Š” ์ผ€์ด์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. feature๋ฅผ dev์—์„œ ๋ถ„๊ธฐํ–ˆ์Œ
  2. dev๊ฐ€ main๋ณด๋‹ค ๋จผ์ € ๊ฐฑ์‹ ๋จ
  3. 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 ์œ„์— ์˜ฌ๋ฆผ.


์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

  1. ๋ฐฑ์—… ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ

    git branch backup/feature
    
  2. ๋ฆฌ๋ฒ ์ด์Šค ์ „ ์ƒํƒœ ํ™•์ธ

    git log --oneline --graph --decorate --all
    
  3. ๋ฆฌ๋ฒ ์ด์Šค ํ›„ ๊ฒ€์ฆ

    git range-diff origin/dev..feature@{1} origin/main..feature
    git diff origin/main...feature
    
  4. ๋ฌธ์ œ ์‹œ ๋ณต์›

    git reflog
    git reset --hard backup/feature
    

์ถฉ๋Œ ์ฒ˜๋ฆฌ ์š”๋ น

์ถฉ๋Œ์ด ๋งŽ๋‹ค๋ฉด cherry-pick ์ „๋žต์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค.


merge์™€์˜ ์ฐจ์ด


๋ธŒ๋žœ์นญ ์ „๋žต์—์„œ์˜ ๊ตํ›ˆ