[TIL] git rebase

์–‘์ฃผ์˜ยท2021๋…„ 12์›” 14์ผ
0

git

๋ชฉ๋ก ๋ณด๊ธฐ
2/4

๐Ÿ“ rebase๋ž€?

master์— ๋‹ค๋ฅธ branch๋ฅผ ๋ณ‘ํ•ฉํ•  ๋•Œ ์“ฐ์ด๋Š” ๋ฐฉ๋ฒ•์ด ๋‘ ๊ฐ€์ง€์ธ๋ฐ, ํ•˜๋‚˜๋Š” merge์ด๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” rebase ์ด๋‹ค.

branch ๋ณ‘ํ•ฉ๋ฐฉ์‹ rebase์™€ merge์˜ ์ฐจ์ด์ 

rebase๋Š” ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๋ฉด์„œ ๋‚จ๊ฒผ๋˜ commit ์ค‘ ๋ถˆํ•„์š”ํ•œ ๊ฒƒ๋“ค์€ ์ƒ๋žต์‹œํ‚ค๊ณ  ํ•„์š”ํ•œ commit๋งŒ ๋‚จ๊ฒจ์„œ master์— ๋ณ‘ํ•ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— master์˜ commit์„ ๋ณด๋‹ค ๊น”๋”ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, rebase๋Š”...

  • ๋ถˆํ•„์š”ํ•œ merge commit ์ƒ์„ฑ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.
  • ๋…๋ฆฝ๋œ ๋ธŒ๋žœ์น˜์—์„œ ๋กœ์ง ํ•˜๋‚˜๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋”๋ผ๋„,
    ๋‹ค๋ฅธ ์ž‘์—…๊ณผ ๊ทธ ๋‚ด์—ญ์ด ๊ฒน์ณ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ ๊ทธ๋Ÿด ๋•Œ history ๊ด€๋ฆฌ๊ฐ€ ์‰ฝ๋‹ค.

๐Ÿ“ Rebase ์‚ฌ์šฉํ•˜๋Š” ๋ฒ•

  1. Main branch๋กœ ์ด๋™ํ•˜์—ฌ remote main์„ pull ๋ฐ›๋Š”๋‹ค.
  2. ๋‚ด๊ฐ€ pushํ•  Feature branch๋กœ ์ด๋™ํ•œ๋‹ค.
  3. โ€˜Git rebase -I mainโ€™๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

rebaseํ•˜๋Š” ๋™์•ˆ squash ์ง„ํ–‰ํ•  ๋•Œ์—๋Š”
1. ๊ฐ€์žฅ ์˜ค๋ž˜๋œ commit์„ pickํ•œ๋‹ค.
2. ๋‹ค๋ฅธ ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€๋Š” ๊ฐ€์žฅ. ์˜ค๋ž˜๋œ commit์„ ๊ธฐ์ค€์œผ๋กœ squash ํ•œ๋‹ค.
3. ๋‹ค๋ฅธ ์ปค๋ฐ‹์˜ ์ž‘์—… ๋‚ด์—ญ์ด ์—†์–ด์ง€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.
4. Esc -> :wq ๋กœ ์ฐฝ์—์„œ ๋น ์ ธ๋‚˜์˜จ๋‹ค.


๊ทธ๋Ÿฌ๋ฉด ์ˆ˜์ •์šฉ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋‚˜ ๋” ๋‚˜ํƒ€๋‚œ๋‹ค.
1. ์ตœ์ข…์ ์œผ๋กœ ์ด rebase๋œ ์ปค๋ฐ‹์˜ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜๋Š” ๋ถ€๋ถ„
2. ํ˜„์žฌ๊นŒ์ง€ ์ ์€ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๊ฐ€ ์ „๋ถ€ ๋‚˜ํƒ€๋‚œ๋‹ค.
3. ๋ถˆํ•„์š”ํ•œ ๋‚ด์šฉ์„ ์ œ๊ฑฐํ•˜๊ณ . ํ˜„์žฌ ์ˆ˜์ • ๋‚ด์—ญ์— ๋Œ€ํ•œ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ์ •์„ฑ๊ป ์ž‘์„ฑํ•œ๋‹ค.
4. Esc -> :wq ์ €์žฅํ•˜๊ณ  ์—๋””ํ„ฐ์—์„œ ๋น ์ ธ๋‚˜์˜จ๋‹ค.


Successfully rebased!
์„ฑ๊ณตํ–ˆ๋‹ค๋ฉด git log๋กœ ๊น”๋”ํ•ด์ง„ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธ ํ›„,
Push ํ•œ๋‹ค.


Rebase ํ›„ push
1. rebase๋Š” commit history๋ฅผ ์ •๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
2. ๊ฐ™์€ ๋ธŒ๋žœ์น˜์—์„œ Rebase๋ฅผ ํ•  ๋•Œ๋งˆ๋‹ค history๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.
3. ์ˆ˜์ • ์‚ฌํ•ญ์ด ์ถ”๊ฐ€๋กœ ์ƒ๊ธด ํ›„ ๋‹ค์‹œ rebaseํ•˜๋ฉด history๊ฐ€ ๋ฌด์กฐ๊ฑด ๋‹ฌ๋ผ์ง„๋‹ค.
4. Git์€ history๊ฐ€ ๋‹ค๋ฅธ branch์˜ push๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
5. โ€˜Git push origin feature/login -fโ€™ -f ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ force push๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.


๊ทธ๋ž˜์„œ merge์™€ rebase ์ค‘ ๋ฌด์—‡์ด ๋” ๋‚ซ๋ƒ๊ณ ..?

merge/ rebase ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์“ฐ๋ฉด ๋œ๋‹ค.
history๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณด์กดํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ๊ฒฌํ•ด๊ฐ€ ๊ฐˆ๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง„ํ–‰ํ•˜๋Š” ํŒ€๊ณผ ํ”„๋กœ์ ํŠธ์— ๋”ฐ๋ผ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค.



profile
๋šœ๋ฒ…๋šœ๋ฒ…

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

comment-user-thumbnail
2022๋…„ 9์›” 16์ผ

์ข‹์€ ๊ธ€ ์ž˜๋ดค์Šต๋‹ˆ๋‹ค!

๊ถ๊ธˆํ•œ๊ฒŒ rebase -i ์˜ต์…˜์œผ๋กœ ์ปค๋ฐ‹๋‚ด์—ญ์„ ํ•ฉ์น˜์ง€์•Š๊ณ  rebase ๋ฅผ ํ•œ๋‹ค๋ฉด ์ปค๋ฐ‹ id? ๋Š” ๋ฐ”๋€Œ์ง€๋งŒ ์–ด๋–ค๊ฑธ ํ–ˆ๋‹ค๋Š” ํžˆ์Šคํ† ๋ฆฌ๋Š” ๋‚จ๊ธธ์ˆ˜ ์žˆ์ง€์•Š๋‚˜์š”??
๊ผญ -i ์˜ต์…˜์œผ๋กœ ์ปค๋ฐ‹๋‚ด์—ญ์„ ํ•ฉ์ณ์•ผ ๋ฆฌ๋ฒ ์ด์Šค๊ฐ€ ๋˜๋Š”๊ฑด๊ฐ€์š”??

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ