Git Rebase

HSKwonยท2023๋…„ 3์›” 21์ผ
0
post-thumbnail

๐ŸŒ Git ๋ธŒ๋žœ์น˜ - rebase์˜ ์ค‘์š”์„ฑ

โœ๏ธ ๋ถ€ํŠธ์บ ํ”„์—์„œ ํŒ€ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ, git merge๋งŒ ์‚ฌ์šฉํ–ˆ์—ˆ๋˜ ๊ธฐ์–ต์ด ์žˆ๋‹ค.
โœ๏ธ ํšŒ์‚ฌ์— ์ž…์‚ฌํ•˜๊ณ  ๋‚œ ํ›„, ์—ฌ๋Ÿฌ๋ช…์ด ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์— ํˆฌ์ž…๋˜์—ˆ๋Š”๋ฐ ๋‹จ์ˆœํžˆ git merge๋งŒ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์—ฌ๋Ÿฌ ๋ฌธ์ œ์ ์ด ์œ ๋ฐœ๋  ์ˆ˜ ์žˆ์Œ์„ ์ธ์‹ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.



(๋ณต์žกํ•˜๊ฒŒ ์ปค๋ฐ‹๊ทธ๋ž˜ํ”„๊ฐ€ ์–ฝํ˜€์žˆ๋Š” ๋ชจ์Šต)

๐Ÿฅต ๋ฌธ์ œ์ 

1๏ธโƒฃ์ปค๋ฐ‹ ๊ทธ๋ž˜ํ”„๊ฐ€ ์–ฝํ˜€์žˆ์–ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํŒŒ์•…ํ•˜๊ธฐ ํž˜๋“ฆ
2๏ธโƒฃ์ƒ๋Œ€๋ฐฉ์ด ์ž‘์—…ํ•˜์—ฌ ์ปค๋ฐ‹ํ•œ ๊ฒฐ๊ณผ๋ฌผ์— ๋‚˜์˜ ์ปค๋ฐ‹์ด ๋‹ฌ๋ผ๋ถ™์–ด ์–ฝํ˜€์žˆ๋Š” ๋ชจ์Šต


๊ทน๋‹จ์ ์œผ๋กœ, Merge๋งŒ ํ•  ๊ฒฝ์šฐ, ์—„์ฒญ๋‚˜๊ฒŒ ๋ณต์žกํ•œ ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค.
์ด๋Ÿฐ ๊ฒฝ์šฐ, ์ด์ „ ๊ทธ๋ž˜ํ”„์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ, ์ปค๋ฐ‹์„ ์ž˜ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

โœ… Git Merge

Git Merge๋Š” ์—ฌ๋Ÿฌ branch๋“ค์ด ์กด์žฌํ•  ๋•Œ, ํ•˜๋‚˜์˜ branch๋กœ ํ†ตํ•ฉ์‹œํ‚ค๋Š” ๊ฐœ๋…์ด๋‹ค.

โœ… Git Rebase

Git Rebase๋Š” branch์˜ base๋ฅผ ์žฌ์„ค์ •ํ•œ๋‹ค๋Š” ๊ฐœ๋…์ด๋‹ค.
์ฆ‰, ํ•˜๋‚˜์˜ ๋ธŒ๋žœ์น˜๊ฐ€ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์—์„œ ํŒŒ์ƒ๋˜์„œ ๋‚˜์˜จ ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์—์„œ ์ง„ํ–‰๋œ ์ปค๋ฐ‹์„ ๋‹ค์‹œ ๊ฐ€์ ธ์™€ base๋ฅผ ์žฌ์„ค์ • ํ•˜๋Š”๊ฒƒ.
๋‚˜์™€ ์ƒ๋Œ€๋ฐฉ์ด ๋™์‹œ์— ์ž‘์—…์„ ํ–ˆ๊ณ , ์ƒ๋Œ€๋ฐฉ์ด ๋จผ์ € ์ปค๋ฐ‹์„ ํ–ˆ๋‹ค๋ฉด, ์ƒ๋Œ€๋ฐฉ์˜ ์ƒˆ๋กœ์šด ์ปค๋ฐ‹์„ base๋กœ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณ‘ํ•ฉ ์‹œ, conflict ์—†์ด ๋‚˜์˜ ์ž‘์—…๋ฌผ์„ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.


ํšŒ์‚ฌ์—์„œ ์ง„ํ–‰์ค‘์ธ ํ”„๋กœ์ ํŠธ์˜ ์ปค๋ฐ‹ ๊ทธ๋ž˜ํ”„


Rebase ๊ณผ์ •

git checkout fe/contract
git add
git commit
git pull -r upstream '์›๊ฒฉ๋ธŒ๋žœ์น˜'
git push 'origin ๋ธŒ๋žœ์น˜'
pull request
๐Ÿง‘โ€๐ŸŽ“ git pull -r upstream '์›๊ฒฉ๋ธŒ๋žœ์น˜'๋ž€...
push ์ด์ „์— ๋‹ค๋ฅธ ์ž‘์—… ๊ฒฐ๊ณผ๋ฌผ์„ pullํ•˜๋ฉด์„œ -r์˜ต์…˜(rebase)์„ ์ ์šฉํ•˜๋Š” ๋ฐฉ์‹

reference

https://www.atlassian.com/ko/git/tutorials/rewriting-history/git-rebase

profile
๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์ด๋‚˜ ๊ด€์‹ฌ ์žˆ๋Š” ์ •๋ณด๋ฅผ ๊ธ€๋กœ ์ •๋ฆฌํ•˜๋ฉฐ ์ต์ˆ™ํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

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