๐ŸŒฟ Git ์ด์Šˆ ๋ธŒ๋žœ์น˜ ์ „๋žต๊ณผ ๋ฆฌ๋ฒ ์ด์Šค ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ

coldrice99ยท2024๋…„ 10์›” 24์ผ
0


์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” Git ํ˜‘์—…์˜ ํ•ต์‹ฌ ๊ฐœ๋…์ธ ์ด์Šˆ ๋ธŒ๋žœ์น˜ ์ „๋žต๊ณผ ๋ฆฌ๋ฒ ์ด์Šค(Rebase)์˜ ๊ฐœ๋… ๋ฐ ๋™์ž‘ ๊ณผ์ •์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


1. ์ด์Šˆ ๋ธŒ๋žœ์น˜ ์ „๋žต

๐Ÿ“Œ ์ด์Šˆ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์—…ํ•˜๊ธฐ

Git์„ ์‚ฌ์šฉํ•ด ํ˜‘์—…ํ•  ๋•Œ๋Š” ์ด์Šˆ ๋ธŒ๋žœ์น˜ ์ „๋žต์„ ํ™œ์šฉํ•ด ๊ฐ ๊ธฐ๋Šฅ์ด๋‚˜ ์ž‘์—…๋ณ„๋กœ ๋…๋ฆฝ์ ์ธ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ๊ฐ์˜ ๊ธฐ๋Šฅ์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ณ , ์ถฉ๋Œ์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์Šˆ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ํ†ตํ•ด ์ด์Šˆ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•ด ์ž‘์—…์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

git checkout main
git pull origin main
git checkout -b issue/์ด์Šˆ๋ฒˆํ˜ธ

๐Ÿ’ก ๋ธŒ๋žœ์น˜ ์ „๋žต ํŒ

  • ์ž‘์—… ๋‹จ์œ„ ๋ถ„๋ฆฌ: ๊ฐ ๊ธฐ๋Šฅ๋งˆ๋‹ค ๋ธŒ๋žœ์น˜๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ , ์ด์Šˆ ๋ฒˆํ˜ธ๋ฅผ ํฌํ•จํ•ด ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋ฉด ๋‹ค๋ฅธ ํŒ€์›๋“ค์ด ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Ref #์ด์Šˆ๋ฒˆํ˜ธ ํ˜•์‹ ์‚ฌ์šฉ: ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์— Ref #์ด์Šˆ๋ฒˆํ˜ธ๋ฅผ ํฌํ•จํ•˜๋ฉด, ์ปค๋ฐ‹๊ณผ ์ด์Šˆ๋ฅผ ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐํ•ด์ค˜ ์ž‘์—… ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ๋ช…ํ™•ํ•ด์ง‘๋‹ˆ๋‹ค.

2. ๋ฆฌ๋ฒ ์ด์Šค(Rebase)๋ž€?

๐Ÿ”„ ๋ฆฌ๋ฒ ์ด์Šค์˜ ๊ฐœ๋…

๋ฆฌ๋ฒ ์ด์Šค(Rebase)๋Š” ํ•œ ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹์„ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์˜ ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹ ๋’ค๋กœ ์ด์–ด๋ถ™์ด๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ ํ†ตํ•ด ๊น”๋”ํ•œ ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ, ํŒ€์› ๊ฐ„์˜ ํ˜‘์—… ์‹œ ์ฝ”๋“œ ์ถฉ๋Œ์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌ๋ฒ ์ด์Šค์˜ ๋ชฉ์ ์€ ๋ณ‘ํ•ฉ ์ปค๋ฐ‹์„ ์—†์• ๊ณ , ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๋Š” ๋ฐ ์žˆ์Šต๋‹ˆ๋‹ค. Merge์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ, ๋ฆฌ๋ฒ ์ด์Šค๋Š” ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์ง๊ด€์ ์œผ๋กœ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋‚˜ ์ถ”์ ์ด ์‰ฌ์›Œ์ง€๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.


3. ๋ฆฌ๋ฒ ์ด์Šค ๋™์ž‘ ๊ณผ์ •

๋ฆฌ๋ฒ ์ด์Šค๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌ๋ฒ ์ด์Šค๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์ˆœ์„œ๋Œ€๋กœ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿ› ๏ธ ๋ฆฌ๋ฒ ์ด์Šค ์‚ฌ์šฉ๋ฒ•

  1. ํ˜„์žฌ ์ž‘์—… ์ค‘์ธ ๋ธŒ๋žœ์น˜์—์„œ ๋ฆฌ๋ฒ ์ด์Šค ์ˆ˜ํ–‰
    ์ž‘์—… ์ค‘์ธ ๋ธŒ๋žœ์น˜์—์„œ ๋‹ค๋ฅธ ํŒ€์›์˜ ์ตœ์‹  ์ž‘์—…์„ ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌ๋ฒ ์ด์Šค๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    git fetch origin
    git rebase origin/main

    ์œ„ ๋ช…๋ น์–ด๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ตœ์‹  ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์™€(fetch) ํ˜„์žฌ ์ž‘์—… ๋ธŒ๋žœ์น˜์— ๋ฐ˜์˜(rebase)ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

  2. ๋ฆฌ๋ฒ ์ด์Šค ์ถฉ๋Œ ํ•ด๊ฒฐ
    ๋ฆฌ๋ฒ ์ด์Šค ์ค‘ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฉด, ์ถฉ๋Œ ์ง€์ ์„ ์ˆ˜์ •ํ•˜๊ณ  git add๋กœ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ•œ ํ›„ ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ๋ฆฌ๋ฒ ์ด์Šค๋ฅผ ์ด์–ด๊ฐ‘๋‹ˆ๋‹ค.

    git rebase --continue

    ๋งŒ์•ฝ ๋ฆฌ๋ฒ ์ด์Šค ์ค‘ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ , ์ž‘์—…์„ ์ทจ์†Œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ๋ฆฌ๋ฒ ์ด์Šค๋ฅผ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    git rebase --abort
  3. ๊ฐ•์ œ ํ‘ธ์‹œ๋ฅผ ํ†ตํ•œ ์ตœ์‹  ์ƒํƒœ ๋ฐ˜์˜
    ๋ฆฌ๋ฒ ์ด์Šค ํ›„์—๋Š” ์ด์Šˆ ๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ•์ œ๋กœ ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ฒ ์ด์Šค๋Š” ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ•์ œ ํ‘ธ์‹œ(--force)๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

    git push origin issue/์ด์Šˆ๋ฒˆํ˜ธ --force

โš ๏ธ ์ฃผ์˜ํ•  ์ 

๋ฆฌ๋ฒ ์ด์Šค๋Š” ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋ฏธ ํŒ€์›์ด ๊ณต์œ ํ•œ ์ปค๋ฐ‹์— ๋Œ€ํ•ด ๋ฆฌ๋ฒ ์ด์Šค๋ฅผ ํ•  ๋•Œ๋Š” ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ˜‘์—… ์ค‘์—๋Š” ํŒ€์›๋“ค๊ณผ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ์ถฉ๋ถ„ํžˆ ํ•˜์—ฌ ๋ฆฌ๋ฒ ์ด์Šค๋กœ ์ธํ•œ ํ˜ผ๋ž€์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


4. Merge์™€ Rebase์˜ ์ฐจ์ด์ 

๐Ÿ”€ Merge

  • ๋ณ‘ํ•ฉ ์ปค๋ฐ‹์„ ์ƒ์„ฑํ•˜์—ฌ ๋‘ ๋ธŒ๋žœ์น˜๋ฅผ ํ•ฉ์นฉ๋‹ˆ๋‹ค.
  • ์ž‘์—… ๋‚ด์—ญ์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”„ Rebase

  • ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹์„ ์ƒˆ๋กœ ์ด์–ด๋ถ™์—ฌ ๋ณ‘ํ•ฉ ์ปค๋ฐ‹ ์—†์ด ๊น”๋”ํ•œ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ํ•œ ์ค„๋กœ ์ •๋ฆฌ๋œ ํžˆ์Šคํ† ๋ฆฌ๋Š” ํ”„๋กœ์ ํŠธ์˜ ํ๋ฆ„์„ ์ง๊ด€์ ์œผ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๐Ÿ’ก ํŒ: ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ์™€ ํ˜‘์—… ๋ฐฉ์‹์— ๋”ฐ๋ผ ์–ธ์ œ Merge๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์–ธ์ œ Rebase๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„์ง€ ํŒ€์›๋“ค๊ณผ ๋ฏธ๋ฆฌ ์ •ํ•ด๋‘๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.


๋งบ์Œ๋ง

๋ฆฌ๋ฒ ์ด์Šค๋Š” ๊น”๋”ํ•œ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜๊ณ , ์ฝ”๋“œ ์ถฉ๋Œ์„ ์ค„์ด๋Š” ๋ฐ ์œ ์šฉํ•œ Git์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด์Šˆ ๋ธŒ๋žœ์น˜ ์ „๋žต๊ณผ ๋ฆฌ๋ฒ ์ด์Šค๋ฅผ ์ž˜ ํ™œ์šฉํ•˜๋ฉด ํ˜‘์—…์˜ ํšจ์œจ์„ฑ์„ ํฌ๊ฒŒ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, ๊ณผ๊ฑฐ์˜ ๋น„ํšจ์œจ์ ์ธ ๋ฆฌ๋ฒ ์ด์Šค ๋ฐฉ์‹์—์„œ ๋ฒ—์–ด๋‚˜ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์—์„œ ์ง์ ‘ ์ตœ์‹  ๋ฉ”์ธ ๋ธŒ๋žœ์น˜๋ฅผ ๋ฆฌ๋ฒ ์ด์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํžˆ๋ฉด ์ž‘์—… ํ๋ฆ„์„ ๋”์šฑ ๋งค๋„๋Ÿฝ๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

profile
์„œ๋‘๋ฅด์ง€ ์•Š์œผ๋‚˜ ์‰ฌ์ง€ ์•Š๊ณ 

0๊ฐœ์˜ ๋Œ“๊ธ€