[๐Ÿ“ฐ ์œ„ํด๋ฆฌํŽ˜์ดํผ] Git rebase VS Git merge / Git fetch VS Git pull

han91ยท2026๋…„ 1์›” 5์ผ

[์œ„ํด๋ฆฌํŽ˜์ดํผ]

๋ชฉ๋ก ๋ณด๊ธฐ
1/12

๐Ÿ“Œ rebase VS fetch

๐Ÿ’ป git rebase

  • ๊ฐœ๋…

    ๋‚ด ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹๋“ค์„ ๊ธฐ์ค€ ๋ธŒ๋žœ์น˜ ์œ„์— ๋‹ค์‹œ ์Œ“์Œ
    ๊ฒฐ๊ณผ์ ์œผ๋กœ ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ์ผ์ง์„ (linear) ์ด ๋จ

๐Ÿ‘ ์žฅ์ 
1. ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ์•„์ฃผ ๊น”๋”ํ•จ

  1. ๋ถˆํ•„์š”ํ•œ merge commit ์—†์Œ

  2. ๋กœ๊ทธ ์ฝ๊ธฐ ์‰ฌ์›€

๐Ÿ‘Ž ๋‹จ์ 

  1. ์ปค๋ฐ‹ ํ•ด์‹œ๊ฐ€ ๋ฐ”๋€œ

  2. ์ด๋ฏธ ๊ณต์œ ๋œ ๋ธŒ๋žœ์น˜์—์„œ ์“ฐ๋ฉด ์‚ฌ๊ณ  ๋‚จ

  3. conflict๊ฐ€ ์ปค๋ฐ‹ ๋‹จ์œ„๋กœ ์—ฌ๋Ÿฌ ๋ฒˆ ๋‚  ์ˆ˜ ์žˆ์Œ

๐Ÿง ๊ทธ๋Ÿผ ์–ธ์ œ rebase๋ฅผ ์“ฐ๋Š”์ง€?

  1. ํ˜ผ์ž ์ž‘์—…ํ•˜๋Š” feature ๋ธŒ๋žœ์น˜

  2. PR ์˜ฌ๋ฆฌ๊ธฐ ์ „์— ์ปค๋ฐ‹ ์ •๋ฆฌ

  3. main ์ตœ์‹  ์ปค๋ฐ‹์„ ๋ฐ˜์˜ํ•˜๊ณ  ์‹ถ์„ ๋•Œ

๐Ÿ’ ์š”์•ฝ

"ํžˆ์Šคํ† ๋ฆฌ ์ •๋ฆฌ์šฉ ๋„๊ตฌ" ๋А๋‚Œ
-> ๋…ธํŠธ์ •๋ฆฌ ์ •๋„๋กœ ์ดํ•ดํ•˜๋ฉด ์‰ฌ์šธ๋“ฏ
(์ •๋ฆฌ ๋œ ๋‚ด์šฉ ๋’ค์— ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์˜ฎ๊ฒจ ์ ๋Š” ๋А๋‚Œ)

๐Ÿ’ป git merge

  • ๊ฐœ๋…

    ๋‘ ๋ธŒ๋žœ์น˜๋ฅผ ๊ทธ๋Œ€๋กœ ํ•ฉ์น˜๊ณ  merge commit์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์„ ํ•˜๋‚˜ ์ƒ์„ฑํ•จ
    ๊ธฐ์กด ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์ ˆ๋Œ€ ์ˆ˜์ •ํ•˜์ง€ ์•Š์Œ

๐Ÿ‘ ์žฅ์ 

  1. ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ์‹ค์ œ ์ž‘์—… ํ๋ฆ„ ๊ทธ๋Œ€๋กœ ๋‚จ์Œ

  2. ํ˜‘์—… ์‹œ ์•ˆ์ „ํ•จ (๊ณต์œ  ๋ธŒ๋žœ์น˜์— ์ ํ•ฉ)

  3. conflict๊ฐ€ ํ•œ ๋ฒˆ์— ๋ฐœ์ƒ

๐Ÿ‘Ž ๋‹จ์ 

  • merge commit์ด ๋งŽ์•„์ง€๋ฉด ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด์ง

๐Ÿง ๊ทธ๋Ÿผ ์–ธ์ œ merge๋ฅผ ์“ฐ๋Š”์ง€?

  1. ํŒ€ ํ˜‘์—…

  2. ์ด๋ฏธ ์›๊ฒฉ์— ๊ณต์œ ๋œ ๋ธŒ๋žœ์น˜

  3. main, develop ๊ฐ™์€ ์ค‘์š” ๋ธŒ๋žœ์น˜

  4. โ€œ์–ธ์ œ ์–ด๋–ค ๋ธŒ๋žœ์น˜๊ฐ€ ํ•ฉ์ณ์กŒ๋Š”์ง€โ€๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ

๐Ÿ“Œ fetch VS pull

๐Ÿ’ป git fetch

  • ๊ฐœ๋…

    ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ตœ์‹  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋กœ์ปฌ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ๋งŒ ํ•จ
    ๋‚ด ์ž‘์—… ๋ธŒ๋žœ์น˜์—๋Š” ์•„๋ฌด ๋ณ€ํ™”๋„ ์—†์Œ
    ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ origin/main ๊ฐ™์€ ์›๊ฒฉ ์ถ”์  ๋ธŒ๋žœ์น˜์—๋งŒ ๋ฐ˜์˜๋จ

๐Ÿง ๊ทธ๋Ÿผ fetch๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒํƒœ๋Š” ์–ด๋–ป๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š”์ง€?

โŒ working directory ๋ณ€๊ฒฝ ์—†์Œ
โŒ ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ๋ณ€๊ฒฝ ์—†์Œ
โญ• ์›๊ฒฉ ๋ธŒ๋žœ์น˜ ์ •๋ณด๋งŒ ์—…๋ฐ์ดํŠธ
๐Ÿ“Œ ๊ฐฑ์‹ ๊ณผ ๋น„์Šทํ•œ ๋А๋‚Œ์ด๋ผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ธ ํ›„ ์ง์ ‘ ํ•ฉ์ณ์•ผ ํ•จ!

๐Ÿ’ป git pull

  • ๊ฐœ๋…

    git fetch + git merge (๊ธฐ๋ณธ)
    -> ๊ฐ€์ ธ์˜ค์ž๋งˆ์ž ๋ฐ”๋กœ ํ•ฉ์นจ

๐Ÿ” pull ์‚ฌ์šฉ์‹œ git ๋‚ด๋ถ€ ๊ณผ์ •

git fetch origin
git merge origin/main

๐Ÿง ๊ทธ๋Ÿผ pull ์‚ฌ์šฉํ•˜๋ฉด ์ƒํƒœ๋Š” ์–ด๋–ป๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š”์ง€?

โญ• ํ˜„์žฌ ๋ธŒ๋žœ์น˜๊ฐ€ ๋ฐ”๋กœ ๋ณ€๊ฒฝ๋จ
โ€ผ๏ธ ์ถฉ๋Œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ โ€ผ๏ธ



์ฐธ๊ณ 
https://kr.linkedin.com/pulse/what-git-merge-difference-between-rebase-shruthi-rajkumar?tl=ko

profile
์ฒœ๋ฐฉ์ง€์ถ•์–ด๋ฆฌ๋‘ฅ์ ˆ๋น™๊ธ€๋น™๊ธ€๋Œ์•„๊ฐ€๋Š”๊ฐœ๋ฐœ์ž

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