๐Ÿ’ขRebase?

J.Nomaยท2021๋…„ 10์›” 5์ผ
0
post-thumbnail

์•„์ง rebase์— ๋Œ€ํ•œ ์ดํ•ด๋„๊ฐ€ ๋†’์ง€์•Š์•„
์ด ํฌ์ŠคํŒ…์˜ ์‹ ๋ขฐ๋„๋Š” ๋‚ฎ์Šต๋‹ˆ๋‹ค

๊ณต๋ถ€๋ฅผ ํ•˜๋ฉฐ ์ˆ˜์ •. ๋ณด์™„๋œ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค


Git commit์€ ์˜ค๋กœ์ง€ ์œ„๋กœ ์Œ“๋Š” ๊ฒƒ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค
์ด ๊ตฌ์กฐ๋Š” ๋งˆ์น˜ ์—ฐ์‡„์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ chain์„ ์—ฐ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค
๋จธ๋ฆฟ์†์— chain์„ ๋– ์˜ฌ๋ฆฌ๋ฉฐ ์‹œ์ž‘ํ•ด๋ด…์‹œ๋‹ค

rebase๋Š” ๋ง ๊ทธ๋Œ€๋กœ base๋ฅผ ๋ฐ”๊พธ๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค

๊ทธ๋Ÿผ base๋Š” ๋ญ˜๊นŒ์š”?

๋ฏธ๋ฆฌ ์–ธ๊ธ‰ํ–ˆ๋“ฏ, commit์€ ์—ฐ์‡„์ ์ธ ํ˜•ํƒœ๋กœ ๋งˆ์น˜ chain๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค
์ด chain์˜ ์ค‘๊ฐ„์„ ๋Š์–ด์„œ ๋’ท๋ถ€๋ถ„์„ ๋‹ค๋ฅธ chain์— ๊ฑธ์–ด ๋ฒ„๋ฆฌ๋ฉด ์–ด๋–จ๊นŒ์š”?

์ด๊ฒƒ์ด chain์˜ ์‹œ์ž‘์ , base๋ฅผ ๋ฐ”๊พธ๋Š” ํ–‰์œ„. rebase์ž…๋‹ˆ๋‹ค


Rebase๋Š” ์–ด๋–ค ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๋‚˜์š”?

์–ด๋–ค ๊ฒฝ์šฐ์— rebase๋ฅผ ํ•˜๊ฒŒ ๋˜๋Š”์ง€ ์‚ดํŽด๋ด…์‹œ๋‹ค

โœ” Merge๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค


๋‘ branch๋ฅผ ํ•ฉ์น  ๋•Œ rebase๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
๋Œ€์‹ , merge์™€๋Š” ๊ตฌ์กฐ์ ์ธ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค

rebase๋Š” ๊ฒฐ๊ณผ์ ์œผ๋กœ merge์™€ ๊ฐ™์€ ์ฝ”๋“œ๊ฒฐ๊ณผ๋ฅผ ๋‚ด์ง€๋งŒ
branch๋ฅผ ๋Š์–ด๋‚ด์–ด ๋’ค์— ๋ถ™ํ˜€๋ฒ„๋ฆฝ๋‹ˆ๋‹ค

  • ์žฅ์ 
    ํ•œ ์ค„๋กœ ๋งŒ๋“ค์–ด ๋ฒ„๋ฆฌ๊ธฐ์— branch๊ฐ€ ๋ฌด์ˆ˜ํžˆ ๋งŽ์€ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ Git history tree๋ฅผ ์ข€ ๋” ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

  • ๊ทธ๋ ‡๋‹ค๊ณ  branch๊ฐ€ ํก์ˆ˜๋˜์–ด ์กด์žฌ ์ž์ฒด๊ฐ€ ์‚ฌ๋ผ์ง€๋Š”๊ฑด ์•„๋‹™๋‹ˆ๋‹ค
    Git history์—์„  ๋ณด์ด์ง€ ์•Š์ง€๋งŒ ์—ฌ์ „ํžˆ checkout์„ ํ†ตํ•ด ๋ถ„ํ™์ƒ‰ branch๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

  • ๋˜ ๋‹ค๋ฅธ ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค
    ๋ถ„ํ™์ƒ‰ branch๋กœ checkout ํ–ˆ์„ ๋•Œ, ์ฝ”๋“œ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

โœ” ๊ณผ๊ฑฐ์˜ Commit์„ ๋ฐ”๊ฟ€ ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

๊ทน๊ตฌ ์ง€์–‘ํ•ด์•ผ ํ•˜๋Š” ์ผ์ด์ง€๋งŒ, ํ˜๋Ÿฌ๊ฐ„ commit์„ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค
ex) commit ๋ฉ”์‹œ์ง€์— ์˜คํƒ€๊ฐ€ ์žˆ์Œ

๊ฐ€์žฅ ์ตœ๊ทผ commit์€ git commit --amend๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์ง€๋งŒ
๊ณผ๊ฑฐ์˜ commit์€ ์ „ํ˜€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค

rebase๋ฅผ ์ด์šฉํ•ด ๋ฐ”๊พธ๊ณ  ์‹ถ์€ commit์„ ๊ธฐ์ค€์œผ๋กœ ๋’ท๋‹จ chain์„ ํ†ต์งธ๋กœ ๋–ผ์–ด๋‚ด๋ฒ„๋ฆฌ๊ณ 
์ƒˆ๋กœ์šด commit chain์„ ๋งŒ๋“ค์–ด ๋ถ™ํ˜€์•ผ ํ•ฉ๋‹ˆ๋‹ค

git rebase -i <commitํ•ด์‹œ>
1) ์ž…๋ ฅํ•œ commit๋ถ€ํ„ฐ ์ตœ์‹  commit๊นŒ์ง€ ๋ณต์‚ฌํ•œ chain์„ ๋งŒ๋“ค๊ณ  ์›ํ•˜๋Š” ์ˆ˜์ •์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค
2) ๊ธฐ์กด chain์€ ํ๊ธฐํ•˜๊ณ  ์ƒˆ๋กœ๋งŒ๋“  chain์œผ๋กœ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค
์ฐธ๊ณ ๋กœ, -i๋Š” interactive์˜ ์•ฝ์ž์ด๋‹ค


๊ทธ ์™ธ rebase ๋ช…๋ น์–ด

โœ” ํŠน์ • commit ์‚ญ์ œ/์ˆ˜์ •

git rebase -i <commitํ•ด์‹œ>๋ฅผ ์ž…๋ ฅํ•˜๋ฉด commit ๋ฉ”์‹œ์ง€ ์ˆ˜์ •(reword)๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค์–‘ํ•œ ๋™์ž‘์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค

โœ” ์ผ์‹œ์ •์ง€๋œ Rebase๋ฅผ ๋งˆ์ € ์™„๋ฃŒ

์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ๋‹ค๋˜์ง€ ๋“ฑ์˜ ๊ฒฝ์šฐ์— rebase๊ฐ€ ์ค‘๊ฐ„์— ์ •์ง€๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ
์›์ธ์„ ํ•ด๊ฒฐํ•˜๊ณ  git rebase --continue๋ฅผ ํ†ตํ•ด ์žฌ๊ฐœํ•  ์ˆ˜ ์žˆ๋‹ค

profile
๋…ธ์…˜์œผ๋กœ ์ด์‚ฌ๊ฐ‘๋‹ˆ๋‹ค https://tungsten-run-778.notion.site/Study-Archive-98e51c3793684d428070695d5722d1fe

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